切片slice
1.每一个切片引用了一个底层数组
2.切片本省不存储任何数据,都是这个底层数组存储,如果修改切片也就是修改这个底层数组
3.当向切片中添加数据时,如果没有超过容量,直接添加,如果超过容量,自动扩容(成倍增长)
4.切片一旦扩容就是从新指向一个新的底层数组
1.创建切片
//创建一个空切片
var slice01 []int
//创建一个长度和容量为3的切片
slice01 := []int{10,20,30}
//使用make创建切片
func make(t Type,size …IntegerType) Type
第一个参数:类型
slice,map,channel
第二个参数:长度len
实际存储元素的数量
第三个参数:容量cap
最多能存储元素的数量
//使用make创建一个长度为3,容量为8的切片
slice03 := make([]int,3,8)
2.使用append向切片中添加元素
//创建一个长度为0,容量为5的切片
slice04 := make([]int,0,5)
//向切片中添加元素
slice04=append(slice04,1,2,3,4)
3.从已有的数组上直接创建切片slice
slice:=arr[start,end]
切片中的数据:[start,end)
slice:=arr[:end]
切片中的数据:从头到end
slice:=arr[start:]
切片中的数据:从start到末尾
从已有的数组上,直接创建切片,该切片的底层数组就是当前数组。
长度是从start到end的数据
但是容量是从start到数组的末尾