数组
数组是具有固定长度且拥有零个或多个相同数据类型元素的序列。由于数组的长度固定,所以在Go里面很少直接使用。slice的长度可以增长和缩短,在很多场合下使用得更多。然而,万丈高台起于垒土,在理解slice之前,我们必须先理解数组。
数组中的每个元素都是通过索引来访问的,索引从0到数组长度减1。Go内置的函数len可以返回数组中的元素个数。
var a [3]int // 3个整数的数组
fmt.Println(a[0])
fmt.Println(a[len(a)-1])
for i, v := range a {
fmt.Printf("%d %d\n", i, v)
}
for _, v in range a {
fmt.Printf("%d\n, v)
}
默认情况下,一个新数组中的元素初始值为元素类型的零值。对于数字来说,就是0。也可以使用数组字面量根据一组值来初始化一个数组。
var q [3]int = [3]int{1, 2, 3}
var r [3]int = [3]int{1, 2}
fmt.Println(r[2]) // "0"
在数组字面量中,如果省略号 “…” 出现在数组长度的位置,那么数组的长度由初始化数组的元素个数决定。以上可以简化为:
q := [...]int{1, 2, 3}
fmt.Printf("%T\n", q) // "[3]int"
数组的长度是数组类型的一部分,所以[3]int和[4]int是两种不同的数组类型。数组的长度必须是常量表达式,也就是说,这个表达式的值在程序编译时就可以确定。