Go语言切片(Slice)
Go语言切片是对数组的抽象
Go语言数组的长度不可改变,在特定场景中这样的集合就不太适用,Go提供了一种灵活,功能强悍的内置类型切片(动态数组),与数组相比切片的长度是不固定的,可以追加元素,在追加时可能使切片的容量增大。
切片Slice
其本身并不是数组,它指向底层的数组;
作为变长数组的替代方案,可以关联底层数组的局部或全部
为引用类型
可以直接创建或从底层数组获取生成
使用len()获取元素个数,cap()获取容量
一般使用make()创建
如果多个slice指向相同底层数组,其中一个值的改变会影响全部
make([]T, len, cap)
其中cap可以省略,则和len的值相同
len表示存放的元素个数,cap表示容量
切片(Slice)与底层数组的对应关系
由上图可知:
定义切片
声明一个未指定大小的数组来定义切片:
var identifier []type
identifier []type
切片不需要说明长度。
或使用make()函数创建切片:
var slice1 []type = make([]type, len)
也可以简写为
slice1 := make([]type, len)
slice1 []type = make([]type, len)
也可以简写为
slice1 := make([]type, len)
也可以指定容量,其中capacity为可选参数。
make([]T, length, capacity)
([]T, length, capacity)
这里的lenth是数组的长度并且也是切片的初始长度。
切片初始化
s :=[] int {
1,2,3 }
:=[] int {
1,2,3