第二章 内建容器(数组,切片和容器) 数组 var arr1 [5]int arr2 := [3]int{ 1,3,5} arr3 := [...]int{ 2,3,4,5,6} // 编译器识别数组长度 var grid[4][5] int 数组长度写在数组类型的前面 遍历数组 // 基本遍历方法 func printArray(arr [5]int) { for i := 0; i < len(arr); i++ { fmt.Println(i, arr[i]) } } // 使用range遍历 func printArray(arr [5]int) { for i, v := range arr { // i : index v : value fmt.Println(i, v) } } 数组是值类型(作为函数参数是值传递) [10]int 和 [20]int 是不同的类型 go语言中一般不直接使用数组 Slice 切片 1. Slice本身没有数据,是对底层arry的一个view, 修改Slice的值会修改对应的arry的值 arr := [...]int { 0, 1, 2, 3, 4, 5, 6, 7} slice1 = arr[2:6] // arr[2] ~ arr[5] -- [2 3 4 5 6] slice2 = arr[2:] // arr[2] ~ arr[7] -- [2 3 4 5 6 7] slice3 = arr[:6] // arr[0] ~ arr[5] -- [0 1 2 3 4 5] sliceAll = arr[