猿问

结构体的内存地址不可见

在 Go 中,我很困惑为什么可以获取 int 等变量的内存地址,而不能获取 struct 的内存地址。举个例子:


package main


import "fmt"


func main() {

stud1 := stud{"name1", "school1"}

a:=10

fmt.Println("&a is:", &a)

fmt.Println("&stud1 is:",&stud1)

}

输出是:


&a is: 0x20818a220

&stud1 is: &{name1 school1}

为什么 &a 给出内存地址,但是 &stud1 没有给出确切的内存位置。我无意使用内存地址,只是对不同的行为感到好奇。


慕莱坞森
浏览 197回答 1
1回答

德玛西亚99

该fmt包使用反射来打印值,并且有一种特定情况可以将指向结构的指针打印为&{Field Value}.如果要查看内存地址,请使用指针格式化动词%p。fmt.Printf("&stud is: %p\n", &stud)
随时随地看视频慕课网APP

相关分类

Go
我要回答