這是一個建立於 的文章,其中的資訊可能已經有所發展或是發生改變。
1、Go是編譯型語言,但編譯速度非常快,讓人覺得是一門解釋型語言。
2、Go的變數聲名為 var name type,例如var a int。變數的類型放在變數名之後。
3、Go的聲名和賦值是分開的。但如果在函數內可使用a := 15這種形式來同時對變數聲名和賦值,但是變數的類型是由所賦予的值推理出來的。
4、Go的變數都自動初始化為null.
5、多個var聲名可以成組,例如var (x int
y bool
)
6、有相同類型的變數同樣可以在一行內完成聲名,例如var x, y int,變數名之間用','隔開,類似的x,y := 2,3也是可以的。
7、Go中有一種特殊的變數‘_’,任何賦予它的值都會被丟棄。
8、Go對任何聲名了但未使用的變數報錯。
9、混用變數類型是非法的
10、const用來聲名常量,例如cosnt x=1,與var相反(代表變數)。常量只能是數字,布爾值或者字串。在聲名常量時可以指定常量類型,例如const x string = "0"
11、iota函數用來擷取枚舉值,從0 開始
12、Go中處處編碼都是UTF-8,雙引號包裹的字元序列為string類型變數,而單引號包裹的則是一個字元,而不是string
13、Go可的字串是不可修改的,可以通過轉換了rune數組進行改變,再將結果數組轉化為string
14、Go支援原始字串,以``標識
15、Go是原生支援複數的,兩種格式complex128(64位虛部)、complex64(32位虛部)
16、Go加入了內建的錯誤類型error,例如 var a error定義了一個error類型的變數,初始為nil
17、Go不支援對運算子或方法的重載
18、Go支援goto語句
19、Go中沒有逗號運算式,++ --等均為語句而不是運算式,因此在一個 for中如果想使用多個變數必需使用平等賦值。
例如 for i ,j := 0, 11; i<j; i,j := i+1, j-1 {
}
20、支援break和continue,並且支援標籤break ,可在多層嵌套迴圈內break指定層次迴圈
21、range返回索引值對迭代器,可用於slice,、array、string、map、channel