数组
大约 1 分钟
数组
一个由固定长度的特定类型组成的序列。特定类型可以是:字符串、结构体、函数、接口、通道等。
声明
var a [3]int //长度为3的int类型数组,元素为[0,0,0]
var b = [...]int{1,2,3} //长度为3的int类型数组,元素为[1,2,3]
var c = [...]int{1:2,2:3} //长度为3的int类型数组,元素为[0,2,3]
var d = [...]int{0,2,2:3,4} //长度为4的int类型数组,元素为[0,2,3,4]
提示
- 第一种定义:直接初始化长度
- 第二种定义:直接初始化数组元素,其中
...
Go语言编译器根据初始化自动推算长度,例如数组b的长度是3 - 第三种定义:根据索引初始化数组元素,其中未使用索引直接初始化的元素的值对应的是零值,例如c[0]
- 第四种定义:混合使用第二种定义和第三种定义。
遍历
for i:=range a{
fmt.Printf("a[%d]: %d\n",i,a[i])
}
for i,v:=range a{
fmt.Printf("a[%d]: %d\n",i,v)
}
for i:=0;i<len(a);i++{
fmt.Printf("a[%d]: %d\n",i,a[i])
}
提示
for range
方式迭代可以保证不会出现数组越界的情况。- 数组的定义包含长度,因此长度不同的数组,即便类型一致,整个数组仍不是同一类型。
- 长度为0的数组并不占用内存
注意
Go语言中数组是值类型,因此在函数传参中,如果数组比较大,建议传递指针数组,避免数据拷贝开销