从零开始学Go之容器(一):数组
数组是一个由固定长度的特定类型元素组成的序列,一个数组可以由零个或多个元素组成
声明:
var 数组名 [数组长度]类型
var a [10]int//第一个元素a[0],最后一个元素a[len(a)-1]
数组长度在声明后不能改变,因为长度是类型的一部分。
数组的下标是从0开始,到长度len-1为止,长度为3的数组下标对应0,1,2
初始化:
var 数组名 [数组长度]类型{初始化值列表}
var a [3]int{1,2,3} var a [3]int{1,2}//a[2]=0 var a [100]int{99:-1}//索引初始化,a[99]=-1 var a [2]string{a:"a",b:"b"}//自己指定索引并初始化
数组未初始化的值为自动初始化为默认值(零值)
可以通过下标索引初始化,顺序无关,其余索引会自动初始化为默认值,在非数字类型的数组中,索引也可以自己指定。
不定长数组:
var 数组名 [...]类型
var a [...]int{1,2}//此时长度为2
不定长数组的长度会根据初始化值列表长度来计算
数组比较:
不同长度的数组之间不能比较,相同长度的数组之前只有所有元素的值和类型都相等才能相等
a [3]int{1,2} b [2]int{1,2} c [2]int{1,2} fmt.Println(b==c)//结果为true //a==c //编译错误
二维数组:
var 数组名 [数组长度]数组类型
var a [4][3]int//声明一个长度为3,高度为4的数组 var a [2][2]int{{1,2},{3,4}}//2x2数组初始化
数组遍历:
有两种方法,一种是下标遍历,另一种是range遍历
func main() { var team [3]string team[0] = "hammer" team[1] = "soldier" team[2] = "mum" //仿C的写法 for i := 0; i < len(team); i++ { fmt.Println(team[i]) } //go中的range方法 for k, v := range team { fmt.Println(k, v) } }
运行结果
0 hammer
1 soldier
2 mum
hammer
soldier
mum