package main
import (
"fmt"
"time"
)
func main() {
a := make([]int, 4, 5)
a[0] = 1
a[1] = 2
a[2] = 3
fmt.Println(cap(a))
time.Sleep(time.Second)
b := append(a, 4)
fmt.Println(&b)
fmt.Println(&a)
fmt.Println(&b[0])
fmt.Println(&a[0])
a[0] = 9
fmt.Println("---------")
fmt.Println(&b)
fmt.Println(&a)
fmt.Println(&b[0])
fmt.Println(&a[0])
}
打印
5
&[1 2 3 0 4]
&[1 2 3 0]
0xc0000ac060
0xc0000ac060
---------
&[9 2 3 0 4]
&[9 2 3 0]
0xc0000ac060
0xc0000ac060
append()后若超过引用容量,则复制内容到新的内存空间,改变其一个数组中的元素,另一个数组不会随之改变。否则,则引用原内容,不会开辟新空间,改变其中一个数组的元素,另一个随之改变。