数组

  • 几乎所有计算机语言中都会有数组的存在,数组的实现方式类似,都是在计算机内存中分配一段连续的内存来存储数组对象。每个元素可以通过下标来快速定位。
  • 数组是可以有序的存储一列相同类型的对象且长度固定的数据结构,在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