ThinkChat🤖让你学习和工作更高效,注册即送10W Token,即刻开启你的AI之旅 广告
[TOC] # 数组声明和初始化 ## 数组声明 ~~~ var 数组变量名 [元素数量]T ~~~ 数组的长度 `必须` 是 `常量`,并且`长度`是数组类型的一部分。一旦定义,长度不能变。 eg: ~~~ var name [5]string ~~~ 注:`[5]int`和`[10]int`是不同的类型。 ~~~ var a [3]int var b [4]int a = b //不可以这样做,因为此时a和b是不同的类型 ~~~ 数组可以通过下标进行访问,下标是从`0`开始,最后一个元素下标是:`len-1`,访问越界(下标在合法范围之外),则触发访问越界,会panic。 ## 初始化 ### 方法一 (初始化数组时可以使用初始化列表来设置数组元素的值) ~~~ var numArray = [3]int{1, 2} ~~~ ### 方法二 (如果数组长度不确定,可以使用`...`代替数组的长度,编译器会根据元素个数自行推断数组的长度) ~~~ num := [...]int{1,2,3,4,5} ~~~ ### 方法三 (使用指定索引值的方式来初始化数组) ~~~ a := [...]int{1: 1, 3: 5} fmt.Println(a) // [0 1 0 5] ~~~ ## 访问数组元素 数组元素可以通过索引(位置)来读取(或者修改),索引从 0 开始,第一个元素索引为 0,第二个索引为 1,以此类推。 ## 多维数组 ### 二维数组的定义 ~~~ func main() { a := [3][2]string{ {"大雄", "静香"}, {"小叮当", "胖虎"}, {"小夫", "群演"}, } fmt.Println(a) //[[大雄 静香] [小叮当 胖虎]] fmt.Println(a[1][0]) //支持索引取值:小叮当 } ~~~ **注意:**多维数组**只有第一层**可以使用`...`来让编译器推导数组长度 ~~~ //支持的写法 a := [...][2]string{ {"大雄", "静香"}, {"小叮当", "胖虎"}, {"小夫", "群演"}, } //不支持多维数组的内层使用... b := [3][...]string{ {"大雄", "静香"}, {"小叮当", "胖虎"}, {"小夫", "群演"}, } ~~~