首頁 >後端開發 >Golang >為什麼在 Go 中取消引用指標不會更新原始結構?

為什麼在 Go 中取消引用指標不會更新原始結構?

Linda Hamilton
Linda Hamilton原創
2024-12-01 00:26:10946瀏覽

Why Doesn't Dereferencing a Pointer in Go Update the Original Struct?

Go 中的指標解引用

在Go 中,指標解引用涉及存取儲存在指標的記憶體位址中的值指向變數。

問題:

在 Go 教學提供的範例中,未發生指標取消引用的預期行為。當指標變數用於更改結構體的值時,變更不會傳播到結構體的取消引用副本。

說明:

t := * q 操作建立 q 指向的結構的副本。隨後對 q 所做的任何更改都不會影響 t。這種行為是預期的,因為 Go 將指標視為值,而賦值是複製操作。

要觀察 t 中透過 q 所做的更改,有必要維護指向結構的指針,而不是複製值。這可以透過將q 賦值給t 來實現:

C/C 比較:

Go 中的指標引用行為與C/ 中的類似C.在這兩種語言中,指標儲存值的位址,並且取消引用它們可以提供對實際值的存取。然而,在 Go 中,對指標的賦值會導致複製值,而在 C/C 中,它們會直接修改引用的值。

以上是為什麼在 Go 中取消引用指標不會更新原始結構?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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