go語言學習--基礎篇(2)

來源:互聯網
上載者:User

標籤:複數   返回   type   lex   some   輸出   amp   boolean   子串   

一,go的資料類型和操作符

      1,布爾類型

            go語言中bool 類型只有兩個值:true和false;不像其它語言中0和1 也可以表示布爾類型,這在go語言中是不允許的,另外定義一個bool 類型,預設值為false

            a. var b bool (預設為false)

            b. var b bool = true

            c. var b = true

      2, 操作符

            a. == 等於

            b. != 不等於

            c. !b 取反操作

           d. && 與運算

           e. || 或運算

           布爾類型格式化輸出預留位置 %t

     3,整數和浮點數類型

           a. int8,int16,int32,int64 (有符號整數類型) 其中數字表示多少位

           b. uint8,uint16,uint32,unit64 (不帶正負號的整數類型)

           c. int 和 uint, 和作業系統平台有關

           d. float32 和float64浮點數

      注意:go 語言是強型別語言,其實int類型,不通位元組之間也不能直接轉化,例如: int8類型的變數,不能直接賦值int16

      所有的整數初始化為0,所有的浮點數初始化為0.0,布爾類型初始化為false

      4,複數類型

           a,兩種形式:complex64和complex128

           b,var c complex64 = 5 +10i

           c,內建函數complex(re,im)構造一個複數

          d,萬能輸出預留位置:%v

      5,位操作

          a,與操作:&

            1 & 1 = 1;1 & 0 =0; 0 & 1 = 0;0 & 0 =0

          b,或操作

            1 | 1 = 1;1 | 0 =1;0 | 1 =1;0 & 0 =0

          c, 異或操作

            1 ^1 = 0;1 |0 =1;0 |1 =1; 0 & 0 =1

      6,位操作符

          a. 左移 <<    1<< 10 = 1024

          b. 右移 >>   1024 >> 10 = 1

      7,操作符

          a. 邏輯操作符, ==,!=,<,<=,>=

          b. 算數操作符, +,-,*,、,%

二,go語言代碼規範

       1,在go 語言中任何一個代碼檔案隸屬於一個包

       2,import  關鍵字,引用其他包:

           import("fmt")

           匯入多個包
           import (

                 "fmt”

                “os”

            )

         3,同一個包的函數調用,直接調用即可,要是匯入其他包,需要加上包的名字+點+函數名稱,例如 calc.add,calc 為報名,add 為其中的一個函數

         4,包存取控制規則:

               a.函數名或者變數開頭字母大寫,意味著這個函數或者變數,可以在其它源碼中匯入

               b.函數名或者變數開頭字元小寫,意味著這個函數或者變數,不可以匯出,為私人屬性

        5,每個源碼檔案可以含一個init 函數,這個init 函數自動被go啟動並執行架構調用,樣本      

package mainimport (     "fmt")func init(){                                  
fmt.Println("init called")}func main() { fmt.Println("main called") #先輸出init called,最後輸出main called }

 

        6. 包的只初始化,不引用,在go 語言,一般情況下,一個包不引用,是不可以匯入的,否則會編譯出錯,但是也有一種情況是可以匯入包的,進行初始化,即在包名前加_

        import (

             _"add"

        )

 三,常量

         1. 常量使用const修飾,而且永遠唯讀,不能修改

         2. const只能修飾boolean,number(int相互關聯類型,浮點數,complex)和string

         3. const的定義 const identifier [type] = value

         4. 多個值定義  const(

                                    a = 1

                                    b = 2

                                    c = 3

                                  )

         5. iota 字const 中的應用 iota 初始值為0,以後定義參數,如果附其它值,按順序加1,遇到新的const iota 的值重設     

package mainimport (  "fmt")const(a = iotabc)const (d = iotae)func main(){fmt.Printf("%d,%d,%d,%d,%d",a,b,c,d,e)}輸出為:0,1,2,0,1

 

           6,在const 賦值中,如果某個變數沒有賦值,那麼他的值預設為上一個運算式的值

四,go語言中的內建包        

     1.time

func main() {      now := time.Now()                              #擷取目前時間      second :=now.Unix()                            #將目前時間轉化成時間戳記}

 

   2, os

     a. 擷取主機名稱

func main() {    name,ret := os.Hostname()    fmt.Printf("%s %v",name.err)}

    b. 擷取GoPATH

func main(){        val := os.Getenv("PATH")             #os.Getenv 加變數參數        fmt.Printf("%s\n",val)}

 五,字串

   1,字串聲明

         a. var b =string

         b. var b = "hello"

         c. var b string = "hello"

   2.  go 語言的引號

       a. 雙引號,“”,可以包含控制字元

       b. 反引號,··,反引號字元都是原樣輸出

   3. 字串操作

        a. 長度: len(str)

           樣本

func StrOperator() {      str := "hello world"      for index,val := range str {         fmt.Printf("len:%d\n",len(str))       }}

        b. 拼接: +,fmt.Sprintf

             str2 :=str + "world"

        c. 分割: string.Split,返回一個數組

str="hello world"result := strings.Split(str," ")         #已空格分割fmt.Printf("result"%v\n",result)         #返回結果為數組

        d. 包含: string.Contains

str="hello world"result := strings.Contains(str,"he")         fmt.Printf("result"%v\n",result)         #返回true或者false

        e. 首碼或尾碼判斷: strings.HasPrefix,strings.HasSuffix

str = "baidu.com"if ret := strings.HasPrefix(str4,"http://"); ret == false {        str4 = "http://" + str  }

        f. 子串出現的位置: string.Index(),strings.Lastlndex()

        g. join 操作: string.Join(a[]string,Sep string)

六,流量控制語句

      1. if 語句

         if conditionl {

             // do something

         } else if  condition2 {

            // do something

         } else {

        }

   2. if  文法糖

        if b:=100;b> 200 {

           // do something   

        }

    3. for  迴圈

        a      初始化  condition 修改

         for init;condition;modify { }

        b  無限迴圈

        for  {   }

        for true {   }

        c  for 遍曆字串,數組,切片

         for  index,val :=range str {

         }

 

go語言學習--基礎篇(2)

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.