概述
数组是由相同类型的元素的集合组成的数据结构。计算机会为数组分配一块连续的内存来保存其中的元素 。
我们可以利用数组中元素的索引快速访问特定元素。
数组作为一种基本的数据类型,我们通常会从两个维度描述数组,也就是数组中存储的元素类型
和数组最大能存储的元素个数
,在 Go 语言中我们往往会使用如下所示的方式来表示数组类型:
Go 语言数组在初始化之后大小就无法改变
,存储元素类型相同、但是大小不同的数组类型在 Go 语言看来也是完全不同的,只有两个条件都相同才是同一类型。
编译期间的数组类型是由上述的 cmd/compile/internal/types.NewArray
函数生成的,该类型包含两个字段,分别是元素类型 Elem
和数组的大小 Bound
,这两个字段共同构成了数组类型,而当前数组是否应该在堆栈中初始化也在编译期就确定了。
声明数组
Go 语言数组声明需要指定元素类型及元素个数,语法格式如下:
var variable_name [SIZE] variable_type
以上为一维数组的定义方式。例如以下定义了数组 balance 长度为 10 类型为 float32:
var balance [10] float32
初始化数组
以下演示了数组初始化:
var balance = [5]float32{1000.0, 2.0, 3.4, 7.0, 50.0}
我们也可以通过字面量在声明数组的同时快速初始化数组:
balance := [5]float32{1000.0, 2.0, 3.4, 7.0, 50.0}
如果数组长度不确定,可以使用 **...**
代替数组的长度,编译器会根据元素个数自行推断数组的长度:
或
var balance = [...]float32{1000.0, 2.0, 3.4, 7.0, 50.0}
balance := [...]float32{1000.0, 2.0, 3.4, 7.0, 50.0}
如果设置了数组的长度,我们还可以通过指定下标来初始化元素:
// 将索引为 1 和 3 的元素初始化
balance := [5]float32{1:2.0,3:7.0}
:::warning 初始化数组中 {} 中的元素个数不能大于 [] 中的数字。
:::
访问数组元素
数组元素可以通过索引(位置)来读取。格式为数组名后加中括号,中括号中为索引的值。例如:
var salary float32 = balance[9]
以上实例读取了数组 balance
第 10 个元素的值。
总结
- 数组的长度是固定的
- 数组的长度在声明它的时候就必须给定,并且在之后不会再改变