icz*_*cza 8
它们是等价的.一般来说:规范:短变量声明:
ShortVarDecl = IdentifierList ":=" ExpressionList .
"var" IdentifierList = ExpressionList .
所以这一行:
a := [3]int{369, 0, 963}
相当于:
var a = [3]int{369, 0, 963}
[3]int
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}
笔记:
请注意,在复合文字中,不列出所有值是有效的.未明确指定其值的元素将是元素类型的零值.您可以在枚举中的值之前包含可选索引,以指定其值将是其元素的元素.
对于数组和切片文字,以下规则适用:
- 每个元素都有一个关联的整数索引,标记其在数组中的位置.
- 带键的元素使用键作为索引; 键必须是常量整数表达式.
- 没有键的元素使用前一个元素的索引加一个.如果第一个元素没有键,则其索引为零.
0int[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上的所有例子.
有关更多详细信息,请参阅此问题+实际示例: