一、基本介绍

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语言提供了许多快捷方式简化数组初始化的过程。