首頁 >後端開發 >Golang >如何存取和儲存Go結構體的記憶體位址?

如何存取和儲存Go結構體的記憶體位址?

Barbara Streisand
Barbara Streisand原創
2024-11-29 13:37:25365瀏覽

How Do I Access and Store the Memory Address of a Go Struct?

存取和儲存Go 結構的記憶體位址

理解記憶體位址和指標的行為對於程式設計至關重要,尤其是對於複雜的資料結構就像Go 結構體一樣。本文深入探討了列印和操作結構體位址的細微差別。

考慮以下 Go 程式:

type Rect struct {
 width int
 name int 
}

func main() {
 r := Rect{4,6}
 p := &r
 p.width = 15

fmt.Println("-----",&p,r,p,&r)
}

執行此程式時,您可能會觀察到格式為 _____0x40c130 {15 6} &{15 6} &{15 6}。雖然此輸出提供了對記憶體位置的一些了解,但它沒有明確顯示 r 變數的位址。

要直接列印 r 的位址,我們需要繞過 fmt.Println( 使用的預設格式) )。相反,我們可以指定格式字串來控制輸出。 %p 動詞用於列印指針和地址。如下修改 fmt.Println() 行將列印 r 的位址:

fmt.Printf("%p\n", &r)

這將以十六進位格式輸出 r 的位址,例如 0x414020。

此外,如果你想將 r 的位址儲存在變數中,你可以使用以下指令語法:

addr := &r

這會將 r 的記憶體位址分配給變數 addr。然後,您可以使用 addr 間接存取或修改 Rect 結構中包含的值。

請記住,在使用指標和位址時,必須考慮上下文和目的以完全理解它們的用法。

以上是如何存取和儲存Go結構體的記憶體位址?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn