- 当原切片长度小于1024时,新切片的容量会直接翻倍。
- 而当原切片的容量大于等于1024时,会反复地增加25%,直到新容量超过所需要的容量。
- 当需要的容量超过原切片容量的两倍时,会使用需要的容量作为新容量。
三、定义切片
1.声明var定义一个nil的切片。
var tmp []int
2.使用make定义一个指定长度的切片
var tmp []int = make([]int ,10)
3.使用推导式
tmp := make([]int, 10)
4.也可以指定容量,其中 capacity 为可选参数。
tmp make([]T, length, capacity)
注意:nil切片和空切片的区别
nil切片:
空切片:
无论是nil切片,还是空切片,都可以使用append, copy等方法。
无论是nil切片,还是空切片,都可以使用len(),他们的长度都是0。
要注意的是nil切片 == nil,但是 空切片 != nil。
四、切片初始化
s :=[] int {1,2,3 }
s := arr[:]
五、切片操作
1.append
2.copy
3.删除一个元素
4.修改
5.遍历
6.
六、切片的几个坑
由于切片是引用类型,不是值类型。类似于py的列表,也是引用类型。
第一个坑:子切片和父切片用的是同一个底层数组
append,同样会产生这样的问题。
第二个坑:for range遍历的是副本