array
简介
数组的数据结构可以抽象为两个变量:
一个不可变的指针(const ptr *type)
长度(len)
声明语义
go语言的数组声明后即可使用,且数组变量没有零值:
var myarray [10]int
myarray[0] = 1
初始化方法
显示初始化
arr1 := [3]int64{2, 4, 6} // 定义一个长度为3的数组,并初始化
默认初始化
arr1 := [3]int64 // 定义一个长度为3的数组,并将各个元素初始化为0
使用其他数组初始化
arr1 := [3]int64{2, 4, 6}
arr2 := arr1
注意,以上的代码,arr1和arr2是两个完全不同的数组,即修改arr1不会影响arr2,反之亦然。
遍历
len()
函数可以得到数组的长度,也可以用for ... range ...
来遍历数组
arr := [3]string{"one", "two", "three"}
for index, value := range arr {
fmt.Printf("index = %d, value = %s\n", index, value)
}
赋值
由于数组是内置类型,所以赋值操作与参数传递的语义是由go语言预定义好的。
当把一个数组赋值给另一个数组时,由于数组中的指针变量(ptr)不能修改,所以实际的效果是,把另一个数组的元素拷贝到左边数组中,这也要求数组赋值时,两个数组的len要一样大。
看如下代码:
arr1 := [3]int64{1, 2, 3}
arr2 := [3]int64{3, 4, 5}
arr1 = arr2
arr1[0] = 6
fmt.Println(arr1)
fmt.Println(arr2)
输出:
[6 4 5]
[3 4 5]
Last updated
Was this helpful?