• 当原切片长度小于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遍历的是副本