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