struct的内存地址不可见

sro*_*ock 3 go

在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没有给出确切的内存位置.我没有任何使用内存地址的意图,只是对不同的行为感到好奇.

Jim*_*imB 6

fmt包使用反射来打印出的值,并有以打印一个指向结构作为一个特例&{Field Value}.

如果要查看内存地址,请使用指针格式化动词%p.

fmt.Printf("&stud is: %p\n", &stud)
Run Code Online (Sandbox Code Playgroud)