一、新增信息长度 + 当前长度 <= 当前容量
func printSlice(x []int) {
fmt.Printf("len=%d cap=%d slice=%v\n", len(x), cap(x), x)
}
func main() {
numbers := []int{0, 1, 2}
printSlice(numbers)
numbers = append(numbers, 3, 4)
printSlice(numbers)
numbers = append(numbers, 11)
printSlice(numbers)
}
len=3 cap=3 slice=[0 1 2]
len=5 cap=6 slice=[0 1 2 3 4]
len=6 cap=6 slice=[0 1 2 3 4 5]
二、新增信息长度 + 当前长度 > 当前容量 && < 当前容量的2倍
func main() {
numbers := []int{0, 1, 2}
printSlice(numbers)
numbers = append(numbers, 3, 4)
printSlice(numbers)
numbers = append(numbers, 5, 6)
printSlice(numbers)
}
len=3 cap=3 slice=[0 1 2]
len=5 cap=6 slice=[0 1 2 3 4]
len=7 cap=12 slice=[0 1 2 3 4 5 6]
三、新增信息长度 + 当前长度 > 当前容量的2倍
func printSlice(x []int) {
fmt.Printf("len=%d cap=%d slice=%v\n", len(x), cap(x), x)
}
func main() {
numbers := []int{0, 1, 2}
printSlice(numbers)
numbers = append(numbers, 3, 4, 5)
printSlice(numbers)
numbers = append(numbers, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16)
printSlice(numbers)
}
len=3 cap=3 slice=[0 1 2]
len=6 cap=6 slice=[0 1 2 3 4 5]
len=17 cap=18 slice=[0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16]