go-slice
# 要点
slice是一个数组的封装1
2
3
4
5type slice struct {
array unsafe.Pointer
len int
cap int
}使用
fmt.Printf("%T")打印显示为[]type,跟数组类似,但不包括长度作为传入参数时
若只是改变
slice中元素的值,不需要穿引用若改变了
slice长度或容量,则需要穿指针或返回新slice
用数组初始化
slice时,slice容量等于数组的长度减去切割时的索引
1
2
3
4
5
6
7
var array [10]int
slice := array[1:5] // cap = 10 - 1 = 9, len = 5 - 1 = 4(array[1, 2, 3, 4])
fmt.Printf("%T %v\n", array, array)
fmt.Printf("%T %v %v %v\n", slice, slice, len(slice), cap(slice))
[10]int [0 0 0 0 0 0 0 0 0 0]
[]int [0 0 0 0] 4 9