结构的指针地址

  • 本文关键字:地址 指针 结构 go
  • 更新时间 :
  • 英文 :


考虑以下代码:

package main
import "fmt"
type S struct {
Val  int
}
func main() {
e1 := S{Val: 1}
fmt.Printf("%pn", &e1)
fmt.Printf("%pn", &e1.Val)
}

运行后,我们会得到这样的东西:

0xc00001c030
0xc00001c030

让我困惑的是,为什么结构的指针地址和它的成员是相同的?

前往游乐场的链接:https://go.dev/play/p/Wl4tnD9TFmA

Struct是内存区域,所有字段都一一放在那里(如果存在对齐,则它们可能有间隙(。与数组相同。所以结构体的第一个元素显然应该和结构体本身有相同的地址。

最新更新