数组
定义:数组是具有固定长度,有零个或多个相同数据类型元素的序列。
劣势:由于数组的长度固定,Go语言中使用场景较少。
注意:
1.数组的长度是数组类型的一部分,例如[3]int和[4]int是两个不同的数组类型。
数组的长度必须是常量表达式,该表达式的值在编译时确定。
2.函数传参会创建副本,所以传递大数组会很低效,且只影响副本,应使用指针传递。
Go语言把数组和其他类型作为值传递。其他语言中,数组是隐式地使用引用传递。
数组定义和初始化
//定义一个类型为5个长度整数数组的变量,未初始化,初始值为元素默认值
var myarray1 [5]int
//定义并初始化
var myarray2 [3]int = [3]int{1, 2, 3}
//定义并初始化,赋值长度不够定义长度,余下数据则为默认值
var myarray3 [3]int = [3]int{1}
//定义并初始化,若以省略号出现在长度位置上,则数组长度由初始化数组元素个数决定
myarray4 := [...]int{1, 2, 3, 4}
//不常见用法,9个0,,-1,-4
myarray5 := [...]int{9:-1,-4}
//数组类型一样,且元素类型是可比较的,则数组可比较
fmt.Println(myarray2 == myarray3)
数组作为函数参数的情况‘
//函数传参会创建副本
func changeArray(tempArray [3]int) [3]int {
for i := range tempArray {
tempArray[i] = 10
}
return tempArray
}
fmt.Println(changeArray(myarray2))
fmt.Println(myarray2)
结果:
[10 10 10]
[1 2 3]