# 3.1、Golang 数组 数组:相同数据类型的一组数据的集合 - 数组长度不能修改 - 数组可以通过下标(索引)访问元素 - 数组默认初始化为零值 ## 定义 ```go var variable_name [SIZE] variable_type ``` 示例 ```go package main import "fmt" func main() { var arr1 [2]string var arr2 [3]int fmt.Printf("arr1: %v\n", arr1) // arr1: [ ] fmt.Printf("arr1: %T\n", arr1) // arr1: [2]string fmt.Printf("arr2: %v\n", arr2) // arr2: [0 0 0] fmt.Printf("arr2: %T\n", arr2) // arr2: [3]int } ``` ## 初始化 示例 ```go package main import "fmt" func main() { var arr1 = [2]string{"Tom", "Jack"} var arr2 = [3]int{1, 2, 3} var arr3 = [2]bool{true, false} fmt.Printf("arr1: %v\n", arr1) // arr1: [Tom Jack] fmt.Printf("arr2: %v\n", arr2) // arr2: [1 2 3] fmt.Printf("arr3: %v\n", arr3) // arr3: [true false] } ``` 可以省略长度 ```go var arr1 = [...]int{1, 2, 3} // 等价于 // var arr1 = [3]int{1, 2, 3} fmt.Printf("len: %v\n", len(arr1)) // len: 3 ``` 指定索引值 ```go package main import "fmt" func main() { // 未指定的值初始化为零值 var arr1 = [...]int{0: 1, 2: 3} fmt.Printf("arr1: %v\n", arr1) // arr1: [1 0 3] } ``` ## 访问数组元素 示例 ```go package main import "fmt" func main() { var arr1 [3]int fmt.Printf("arr1: %v\n", arr1) // arr1: [0 0 0] // 赋值 arr1[0] = 1 arr1[2] = 2 fmt.Printf("arr1: %v\n", arr1) // arr1: [1 0 2] // 取值 fmt.Printf("arr1[0]: %v\n", arr1[0]) // arr1[0]: 1 // 获取数组长度 fmt.Printf("len(arr1): %v\n", len(arr1)) // len(arr1): 3 // 数组长度越界 fmt.Printf("arr1[0]: %v\n", arr1[3]) // invalid argument: index 3 out of bounds [0:3] } ``` ## 遍历数组 方式一:for ```go package main import "fmt" func main() { var arr = [...]int{100, 200, 300} // 快捷键for + tab for i := 0; i < len(arr); i++ { fmt.Printf("arr[%v]=%v\n", i, arr[i]) } // arr[0]=100 // arr[1]=200 // arr[2]=300 } ``` 方式二:for...range ```go package main import "fmt" func main() { var arr = [...]int{100, 200, 300} // 快捷键forr + tab // 索引, 值 for index, value := range arr { fmt.Printf("arr[%v]=%v\n", index, value) } // arr[0]=100 // arr[1]=200 // arr[2]=300 } ```