GO中是否有顯式數組初始化(聲明和賦值)還是唯一的方法是使用簡寫運算符? 這裏是一個實際的例子 - 這是兩個平等:GO顯式數組初始化
a := [3]int{1, 0, 1}
var a [3]int = [3]int{1, 0, 1}
GO中是否有顯式數組初始化(聲明和賦值)還是唯一的方法是使用簡寫運算符? 這裏是一個實際的例子 - 這是兩個平等:GO顯式數組初始化
a := [3]int{1, 0, 1}
var a [3]int = [3]int{1, 0, 1}
他們是等價的。一般來說:Spec: Short variable declaration:
一個短變量聲明使用語法:
ShortVarDecl = IdentifierList ":=" ExpressionList .
這是一個普通variable declaration與初始化表達式速記,但沒有類型:
"var" IdentifierList = ExpressionList .
所以這一行:
a := [3]int{369, 0, 963}
與當前相同的:
var a = [3]int{369, 0, 963}
但由於表達式列表是[3]int
類型的composite literal,以下是一樣的:
var a [3]int = [3]int{369, 0, 963}
如果一個類型存在,每個變量都被賦予該類型。否則,每個變量都被賦予相應初始化值的類型。
所以,你可以使用任何以下的所有聲明和初始化[3]int
類型的變量:
a := [3]int{369, 0, 963}
b := [...]int{369, 0, 963}
var c = [3]int{369, 0, 963}
var d [3]int = [3]int{369, 0, 963}
var e [3]int = [...]int{369, 0, 963}
var f = [...]int{369, 0, 963}
注:
注意,在複合文字,它是有效的沒有列出所有的值。其值未明確指定的元素將是元素類型的zero value。您可以在枚舉中的值之前包含一個可選索引,以指定其值將爲的值。
對於陣列和切片文字,適用下列規則:
- 每個元件具有相關聯的整數索引標誌着其在陣列中的位置。
- 帶鍵的元素使用鍵作爲其索引;該鍵必須是一個常量整數表達式。
- 沒有鍵的元素使用上一個元素的索引加上一個。如果第一個元素沒有鍵,則其索引爲零。
由於初始數組包含一個0
這對於元素類型int
零值,則可能從字面排除。要創建和初始化變量的值[3]int{369, 0, 963}
,你也可以做這樣的:
// Value at index 1 implicitly gets 0:
g := [3]int{369, 2: 963}
h := [...]int{369, 2: 963}
嘗試在Go Playground所有例子。
詳情請參見+實際的例子這樣一個問題:Keyed items in golang array initialization