常见字面量初始化
var intSet = [6]int{2, 4, 6}
注意 [] 中的 6,它表示数组的长度。因为初始化时,我们只给定了 3 个数,因此后 3 个元素是 0:
[2 4 6 0 0 0]
注意和这种写法的区别:
var intSet = [...]int{2, 4, 6}
对于切片来说,一般这样初始化:
var intSlice = []int{2, 4, 6}
// 或基于 intSet 进行初始化
var intSlice = intSet[:]
特殊的初始化
1、数组中的每个元素有一个关联的标记其位置的整数索引。
2、带键的元素使用该键作为其索引。这个键必须是可被类型 int 所表示的一个非负常量;而且如果其 被赋予了类型的话则必须是整数类型。
3、不带键的元素使用之前元素的索引加一。如果第一个元素没有键,则其索引为零。
a := []int{2: 1} 等价于 a := []int{0, 0, 1}
var x = []int{4: 44, 55, 66, 1: 77, 88} 等价于
var x = []int{4: 44, 5: 55, 6: 66, 1: 77, 2: 88} 等价于
var x = []int{0,77,88,0,44,55,66}
如果改成这样,会报重复索引错误:
var x = []int{4: 44, 55, 66, 3: 77, 88}
错误如下:
./prog.go:8:38: duplicate index 4 in array or slice literal