数组
- 几乎所有计算机语言中都会有数组的存在,数组的实现方式类似,都是在计算机内存中分配一段连续的内存来存储数组对象。每个元素可以通过下标来快速定位。
- 数组是可以有序的存储一列相同类型的对象且长度固定的数据结构,在Go语言中,数组的可存储类型和数组的容量均属于数组类型的一部分,不同的存储类型和不同的数组容量均被视为不同的数据类型。
- 数组一旦创建,数组的长度和存储类型就不能更改,且其在内存中的地址也不会再发生变化
- Go语言中的数组在作为参数值传递时为值传递,会将整个数组拷贝后传到函数中
语法定义
// 定义数组的长度和类型,默认使用类型的零值进行初始化
var a1 [10] int
// 不指定数组的长度,指定类型,默认会使用初始值设定数组的长度
// 初始值有几个,数组长度就是几
var a2 = [...]int {1,2,3,4}
// 指定数组的长度和类型,同时初始化全部或者部分的数字,元素会从前到后顺序初始化
// 初始化时对象的数量不能大于数组设置的长度
var a3 = [10]int {1,2,3,4,5}
// 通过下标初始化数组中的部分值
var a4 = [10]int {1:9,3:8,4:7}
多维数组
go语言中的数组也支持多维数组,要求内部的数组的长度必须相同,以二维数组作为示例
// 声明二维数组,若不显式赋值,则默认零值
var a1 [3][5]int
// 创建二维数组并显式赋值
var a2 = [3][5]int {{1,2,3,4,5},{5,4,3,2,1},{7,8,9,4,5}}
多维数组同样支持初始化部分值
数组遍历
go语言中的数组除了使用传统的下标遍历法之外,还可以使用range关键字对数组进行遍历
// 一维数组的遍历
var a [10]int
// 使用下标进行遍历
for i := 0; i < len(a); i ++ {
fmt.println(a[i])
}
// 使用range关键字遍历
for _ , b := range a {
fmt.println(b)
}
数组比较 ==,!=
两个数组在比较时,如果数组的存储类型,长度,元素值,元素顺序均相同,则可判定两个数组相等,否则判定为不等
var a = [2]int {1,2}
var b = [2]string {"1"."2"}
var c = [3]int {1,2}
a == b // false
a == c // false