一、基本介绍
Go语言中,数组是一个固定大小的数据结构,用于存储元素的集合,元素的类型可以是任意类型。数组的大小在声明时就已经确定,无法动态改变。
// 声明一个长度为3的int类型数组,初始值为0
var a [3]int
在声明数组时,可以指定数组的长度和初始值。
// 声明一个长度为3的int类型数组,并初始化为{1, 2, 3}
var b = [3]int{1, 2, 3}
如果初始化数组时没有指定所有元素的初始值,未初始化的元素会被赋为对应类型的零值。
// 声明一个长度为3的int类型数组,只初始化第1和第3个元素
var c = [3]int{1, 0, 3}
二、数组初始化方式
除了上面介绍的在声明时同时初始化的方式,还可以使用以下方式初始化一个数组:
1. 省略数组长度
// 声明一个动态长度的int类型数组,初始值为空数组
var d []int
// 初始化d为{1, 2, 3}
d = []int{1, 2, 3}
在声明数组时,在数组类型名称后面不指定数组的长度,就可以得到一个切片类型。切片是一种动态数组,在使用时可以根据需要自动扩展或缩小。
2. 使用make函数
// 声明一个长度为3的int类型数组,并初始化为{0, 0, 0}
var e = make([]int, 3)
make函数用于创建切片、映射和通道等动态数据结构。
3. 多维数组初始化
// 声明一个2行3列的int类型二维数组,并初始化为{{1, 2, 3}, {4, 5, 6}}
var f = [2][3]int{{1, 2, 3}, {4, 5, 6}}
多维数组的初始化方式与一维数组类似,可以在声明时指定所有元素的初始值。
三、数组初始化的快捷方式
在Go语言中,提供了很多方式简化数组的初始化过程。
1. 省略数组长度
// 声明一个长度动态的int类型数组,并初始化为{1, 2, 3}
g := []int{1, 2, 3}
省略数组长度时,Go语言会自动根据数组元素个数确定数组长度。
2. 使用省略号
// 声明一个长度为5的int类型数组,并将前3个元素初始化为1,后2个元素初始化为0
h := [5]int{1, 1, 1, 0, 0}
// 等价于
i := [5]int{1, 1, 1, ...0}
使用省略号可以将数组中的一部分元素初始化为相同的值。
3. 使用range关键字
// 声明一个长度为5的int类型数组,并使用range关键字初始化为{0, 1, 2, 3, 4}
j := [5]int{}
for i := range j {
j[i] = i
}
可以使用range关键字遍历数组,并给每个元素赋值。
四、总结
Go语言中,数组是一种固定大小的数据结构,可以使用多种方式初始化。省略数组长度、使用make函数和使用多维数组初始化是常见的数组初始化方式。另外,Go语言提供了许多快捷方式简化数组初始化的过程。