【发布时间】:2020-03-06 17:55:52
【问题描述】:
有两个问题我不明白。
第一种是一个slice变量赋值给另一个变量,发现新变量的地址和变量的地址不一致。我的理解是slice共享内存,按照原理,它们的地址是一样的。
第二个是slice变量容量不足时,append操作后内存地址不变。应该按原理改,因为内存不足时会重新分配内存地址。
我会很感激你的 cmets。
var a = []int{1,2,3}
fmt.Printf("%p\n",&a)
b:=a
fmt.Printf("%p\n",&b) 1)、the first question
b=append(b,0)
fmt.Printf("%p\n",&b) 2)、the second question
fmt.Println(a)
fmt.Println(b)
运行结果是:
0xc04204c3a0
0xc04204c3e0
0xc04204c3e0
[1 2 3]
[1 2 3 0]
【问题讨论】:
标签: go