考慮這段代碼:
package main
import "fmt"
type S struct {
Val int
}
func main() {
e1 := S{Val: 1}
fmt.Printf("%p\n", &e1)
fmt.Printf("%p\n", &e1.Val)
}
運行后,我們會得到類似的東西:
0xc00001c030
0xc00001c030
讓我困惑的是為什么結構的指標地址和它的成員是一樣的?
Go Playground 鏈接:https ://go.dev/play/p/Wl4tnD9TFmA
uj5u.com熱心網友回復:
結構是所有欄位一一放置在那里的記憶體區域(如果存在食物,那么它們可能有間隙)。與陣列相同。所以 struct 的第一個元素顯然應該與 struct 本身具有相同的地址。
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/522260.html
標籤:去