数组内部实现和基本使用
2022-03-24 / 2 min read
了解go数组的细节
数组的内部实现和基础功能
在go中数组是一个长度固定的数据类型,用于存储具有相同类型的元素的连续块。因为存储的空间是连续的,所以遍历和查找元素也是很方便和简单的。
声明和初始化
一旦声明了数组的长度和数组类型那么久不能在改变了,在go中数组的长度和类型也是类型的判断属性。只有两个属性相同的时候才能判定这个两个数组相同。
初始化
第一种:声明一个数组,并设置为零值
var array [5]int
第二种:使用数组字面量声明数组
array := [5]int{1,2,3,4,5}
第三种:让go自动计算声明数组长度
array := […]int{1,2,3,4,5}
第四种:声明数组并指定特定元素的值
array := [5]int{1:10,2:20}
使用数组
因为数组的地址空间是连续的,所以数组的效率是很高的。如果要访问数组中的某个元素,使用【】加上下标就可以进行访问。
使用指针类型的数组的时候,里面存放的是地址。把一个指针数组赋值给另一个指针数组,这个时候这两个数组中存放的地址是相同的,也就是指向的同一个地址空间。
多维数组
数组本身只有一个纬度,不过可以组合多个数组创建多位数组。这里就不再多说多位数组的相关知识了。
在函数间传递数组
在go中传递一个值,都是以类型的方式进行传输的,也就是说传递一个数组,会复制一个完整的数组进行传输,也就是说无论数组多大我们都会进行数组的全复制然后进行传输。
这样的话我们就会损失效率,我们解决的办法就是使用指针类型进行传输。这个时候传输复制的时候就只用复制8字节的指针类型了。