Go語言學習筆記(二) [變數、類型、關鍵字]

來源:互聯網
上載者:User

標籤:http   使用   2014   art   io   re   

日期:2014年7月19日

 1、Go 在文法上有著類 C 的感覺。如果你希望將兩個(或更多)語句放在一行書寫,它們 必須用分號分隔。一般情況下,你不需要分號。

 2、Go 同其他語言不同的地方在於變數的類型在變數名的後面。例如:不是,int a,而是 a int。當定義了一個變數,它預設賦值為其類型的 null 值。這意味著,在 var a int後,a 的 值為 0。而 var s string,意味著 s 被賦值為零長度字串,也就是 ""。 3、Go語言的變數聲明和賦值     在Go中使用var對變數進行聲明,     例如:      var a int       a = 15     var將變數a聲明為int型,然後通過=賦值。     當然在Go語言中,我們可以把聲明和賦值過程一步完成,     例如:      a := 15(這一形式只可用在函數內)     在這種情況中,變數的類型是由值推演出來的,值15是int的類型的,推演出變數a為int類型。          使用var可以聲明一組變數,     例如:var (                     a int                     b bool                )      如果變數的類型一致,還可以使用var a,b int 這種方式來聲明變數,當然還可以使用這種方式進行聲明和賦值:a,b := 20,16      在Go語言中有一個特殊的變數(_,即底線),任何賦給它的值都被丟棄,這將在一些地方變得很有用處。      需要注意的是,Go 的編譯器對聲明卻未使用的變數在報錯。   4、Go語言的類型     1)布爾類型(bool):值可以為true和false     2)數字類型:int,這個類型根據硬體決定,在32位機器上,int是32位的,在64位機器上,int是64位。uint也是如此。          當我們想要明確長度時,可以使用int32(uint32)。完整的整數類型列表(符號和無符號)是 int8,int16,int32,int64 和 byte,uint8,uint16,uint32,uint64。byte 是 uint8 的別名。浮點類型的值有 float32 和 float64 (沒有 float 類型)。64 位元的整數和浮點數總是 64 位元的,即便是在 32 位的架構上。需要留意的是這些類型全部都是獨立的,並且混合用這些類型向變數賦值會引起編譯 器錯誤。           例如:            var a int            var b int32            a = 15            b = a + a//編譯器會報錯,提示(cannot use g + g (type int) as type int32 in assignment)          對於數字類型的賦值,可以使用八進位、十六進位或科學計數法:077,0xFF,1e3 或者 6.022e23 這些 都是合法的。     3)常量:constant ,常量在編譯時間被建立,只能是數字、字串或布爾 值。          例如:          const (                a = iota                b = iota //iota是一個枚舉值,第一次使用時值為0,下一次使用時值就變為1,每一次使用值都會+1          )          const (                a = 0                b bool = true //明確指定常量的類型         )      4)字串           字串賦值:s := "Hello World!"           字串在 Go 中是 UTF-8 的由雙引號(”)包裹的字元序列。如果你使用單引號(’)則 表示一個字元(UTF-8 編碼),這種在 Go 中不是 string 。一旦給變數賦值,字串就不能修改了:在 Go 中字串是不可變的。           那麼如何?改變字串這種操作呢?需要通過下面這種方式:               s := "Hello,World!"               m := []rune(s)               m[0] = ‘C‘               s2 := string(m) //實際上只是新建立了一個字串               fmt.Printf("%s\n", s2)           多行字串:               s := "Starting part"                      + "Ending part"               會被轉換為:               s := "Starting part" ;                      + "Ending part" ;               這是錯誤的文法,應當這樣寫:               s := "Starting part" +                      "Ending part"              Go 就不會在錯誤的地方插入分號。             還可以使用反引號來實現,s := `Starting part                                                               Ending part`             作為原始字串符,值 在引號內的字元是不轉義的。      5)rune             rune是int32的別名,用 UTF-8 進行編碼。這個類型在什麼時候使用呢?例如需要 遍曆字串中的字元。可以迴圈每個位元組(僅在使用 US ASCII 編碼字串時與字元等 價,而它們在 Go 中不存在!)。因此為了獲得實際的字元,需要使用 rune 類型。      6)複數            Go 原生支援複數。它的變數類型是 complex128 (64 位元虛數部分)。如果需要小一些 的,還有 complex64 – 32 位的虛數部分。複數寫為 re + imi,re 是實數部分,im 是虛數部分,而 i 是標記 。            例如:            var ss complex64 = 5 + 5i            fmt.Printf("Value is: %v", ss)           列印結果: Value is: (5+5i)      7)錯誤           var e error定義了一個error類型的變數e,其的值是 nil。這個 error 類型是一個接 口。 5、Go語言的運算子      Go 支援普通的數字運算子,中列出了當前支援的運算子,以及其優先順序。它們 全部是從左至右結合的。                 Go語言不支援運算子多載(或者方法重載),而一些內建運算子卻支援重載。例如 + 可以用於整數、浮點數、複數和字串(字串相加表示串聯它們)。 6、Go關鍵字            中列出了Go中所有的關鍵字,一些已經接觸過,另外一些將在後面介紹。
相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.