1. 字节一面append
func main() {array := make([]int, 0, 2)array = append(array, 1) fmt.Println(&array[0])fmt.Println(array)fmt.Println("----------------------")slice := append(array, 2)fmt.Println(&slice[0])fmt.Println(slice)fmt.Printf("len slice = %d; len array = %d \n", len(slice), len(array))fmt.Println("---------------------------")slice1 := append(array, 3)fmt.Println(&slice1[0])fmt.Println(slice1)fmt.Println(slice)
}
0xc0000a8010
[1]
----------------------
0xc0000a8010
[1 2]
len slice = 2; len array = 1
---------------------------
0xc0000a8010
[1 3]
[1 3]
- 说明:第二次 slice := append(array, 2),赋值给了一个新切片slice,此时对于array切片而言,它的cap依然是2,len依然是1而不是2。对于slice而言,其len=2,已经满了。而第三次对array进行append,既然len是1,那么不需要扩容,直接在第二个位置加上元素。所以结果覆盖了第二次的append