在Go中,我很困惑为什么可以获得像int这样的变量的内存地址而不是结构的内存地址.举个例子:
package main
import "fmt"
func main() {
stud1 := stud{"name1", "school1"}
a:=10
fmt.Println("&a is:", &a)
fmt.Println("&stud1 is:",&stud1)
}
Run Code Online (Sandbox Code Playgroud)
输出是:
&a is: 0x20818a220
&stud1 is: &{name1 school1}
Run Code Online (Sandbox Code Playgroud)
为什么&给出了内存地址,但是&stud1没有给出确切的内存位置.我没有任何使用内存地址的意图,只是对不同的行为感到好奇.
该fmt包使用反射来打印出的值,并有以打印一个指向结构作为一个特例&{Field Value}.
如果要查看内存地址,请使用指针格式化动词%p.
fmt.Printf("&stud is: %p\n", &stud)
Run Code Online (Sandbox Code Playgroud)