对数组切片:
var arr [5]int = [...]int{1, 2, 3, 4, 5}
slice := arr[1:3]
fmt.Printf("%v %v\n%v %v\n", arr[1], slice[0], &arr[1], &slice[0])
由此可见slice切片直接引用arr数组的地址
append方法
var arr [5]int = [...]int{1, 2, 3, 4, 5}
slice := arr[1:3]
var slice1 []int = []int{1, 2}
s := append(slice, slice1...)
s1 := append(slice, 4, 2)
fmt.Println(cap(slice), cap(s), cap(s1))
for i := 0; i < len(s); i++ {
fmt.Printf("%v %v %v\n", &s[i], &s1[i], &arr[i])
}
fmt.Println(slice, s, s1, arr)
由结果可见append方法追加后的切片s、s1也是直接引用切片slice1的地址,值与最后追加s1相同,但是当追加后的容量大于slice1的容量时