目录

一 数组

1.1 数组的声明

数组是一段固定长度的连续内存区域。数组的长度定义后不可更改,长度使用 len() 获取。

var arr1 [10]int                    //定义长度为10的整型数组,很少这样使用
arr2 [5]int := [5]int{1,2,3,4,5}    //定义并初始化
arr3 := [5]int{1,2,3,4,5}            //自动推导并初始化
arr4 := [5]int{1,2}                    //指定总长度,前几位被初始化,没有的使用零值
arr5 := [5]int{2:10, 4:11}            //有选择的初始化,没被初始化的使用零值
arr6 := [...]int{2,3,4}                //自动计算长度

1.2 数组常用操作

arr[:]      代表所有元素
arr[:5]     代表前五个元素,即区间的左闭右开
arr[5:]     代表从第5个开始(不包含第5个)
len(arr)    数组的长度

贴士:上述操作会引发类型的变化,数组将会转化为Go中新的数据类型slice,见09节

1.3 数组的遍历

方式一:for循环遍历

arr := [3]int{1,2,3}

for i := 0; i < len(arr); i++ {
    fmt.Println(arr[i])
}

方式二:for-range遍历

arr := [3]int{1,2,3}

for k, v := range arr {
    fmt.Println(k)    //元素位置    
    fmt.Println(v)    //元素值
}

1.4 数组使用注意事项

数组创建完长度就固定,不可以再追加元素;

长度是数组类型的一部分,因此[3]int[4]int是不同的类型;

数组之间的赋值是值的赋值,即当把一个数组作为参数传入函数的时候,传入的其实是该函数的副本,而不是他的指针。