在引擎盖下发生了什么(分配,指针),以便获取解除引用数组的地址并不会返回相同的地址?
package main
import (
"fmt"
)
func main() {
in := [...]int{1, 2, 3, 4, 5}
orig := *&in
if &in != &orig {
fmt.Printf("&in = %p, &orig = %p\n", &in, &orig)
}
a := 1
b := *&a
if &a != &b {
fmt.Printf("&a = %p, &b = %p\n", &a, &b)
}
}
直播示例here。
我是Go的新手,我发现这令人惊讶;我本来期望同一个地址。我怀疑发生了一个新的阵列(副本)正在分配并分配给orig
和b
。