本文共 1286 字,大约阅读时间需要 4 分钟。
数组可以看作是一系列同一类型数据的集合,每个数据项称为数组元素。数组的大小即为其包含的元素数量。
在Go语言中,数组的长度和类型在声明后是固定的,可以修改数组中的元素值,但无法更改数组的大小和类型。
数组的声明格式为:
var 数组名称 [长度] 数据类型
这条语法声明了一个数组,数组的大小和元素类型在声明时就确定下来。数组的内存会预先分配空间,并初始化存储的元素值。
可以先声明数组,再逐个赋值:
var numbers [3]intnumbers[0] = 1numbers[1] = 2numbers[2] = 3
这样做的好处是让编译器提前分配内存,避免了运行时分配带来的性能问题。
可以在声明时直接赋值:
numbers := [3]int{1, 2, 3} 这种写法简洁高效,适合明确长度的数组。
在赋值时可以指定元素的位置:
names := [3]string{ 0: "alex", 2: "david", 1: "eson"} 数组会根据指定的位置进行赋值,剩余位置会自动初始化为零值。
Go语言支持动态长度的数组声明:
num := [...]int{1, 2, 3} 省略长度部分时,Go语言会自动根据数组中包含的元素数量确定数组的大小。
可以通过len()函数获取数组的大小:
num1 := [3]int{1, 2, 3}fmt.Println(len(num1)) // 输出: 3 数组的索引从0开始,到数组大小减1为止:
num1 := [3]int{1, 2, 3}fmt.Println(num1[0]) // 输出: 1 通过切片操作可以获取数组的一部分数据:
num1 := [...]int{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12}fmt.Println(num1[3:]) // 输出: [4 5 6 7 8 9 10 11 12]fmt.Println(num1[0:2]) // 输出: [1 2] 可以通过for循环逐个访问数组元素:
for i := 0; i < len(a); i++ { fmt.Println(a[i])} 或者使用for range更方便地遍历数组:
for index, value := range a { fmt.Println(index, value)} addr := [2][3]string{ {"北京1", "北京2", "北京3"}, {"上海1"}}fmt.Println(addr) 输出结果:
[[北京1 北京2 北京3] 上海1]
需要注意的是,多维数组中除了第一层外,其余层的长度必须在声明时明确指定,不能使用省略号...。
转载地址:http://eloyz.baihongyu.com/