Code:
func main(){
var (
a struct{}
b struct{}
)
println("&a:", &a)
println("&b:", &b)
println("&a == &b:", &a == &b)
m := &a
n := &b
println("m == n:", m == n)
x := make([]struct{}, 10)
println("&x[0] == &x[1]:", &x[0] == &x[1])
}
Result:
PS D:\emptyStruct> go run -gcflags '-m -N -l' main.go
./main.go:15:11: make([]struct {}, 10) does not escape
&a: 0xc00004ff05
&b: 0xc00004ff05
&a == &b: false
m == n: true
&x[0] == &x[1]: true
为什么a和b的地址都是一样的,但是&a == &b却为false,但是将地址赋值给变量m == n就为true,谁能解释一下为什么?