首頁  >  文章  >  後端開發  >  為什麼Go函數中的指標賦值有時不影響原值?

為什麼Go函數中的指標賦值有時不影響原值?

DDD
DDD原創
2024-10-28 01:38:02148瀏覽

Why Does Pointer Assignment in Go Functions Sometimes Not Affect the Original Value?

Go 函數中的指標賦值:為什麼會產生不同的結果?

在 Go 中將指標傳遞給函數時,了解如何進行指標賦值至關重要。使用指標及其對原始值的影響。本討論圍繞著一個程式碼片段展開,該程式碼片段將指標傳遞給結構體 Test,旨在修改其 Value 欄位。

第一個程式碼片段,儘管嘗試透過將新的 Test 結構體指派給指標來變更 Value 欄位(*p = Test{4}),無法變更實際值。這是因為它只是重新分配指標變數 p,而不是指向的值。 f() 函數中的 p 變數獨立存在,對 main() 中 p 變數所指向的值沒有影響。

相反,第二個程式碼片段,其中 p.Value明確設定為 4,成功修改 Value 欄位。這是因為 運算子取消引用指針,從而允許存取和修改實際指向的值。

作為補充說明,可以透過傳遞來修改儲存在 main() 函數的指標變數中的位址它的位址 (*) 到 f() 函數。然而,與直接使用 p.Value.

修改指向值相比,這種方法效率較低且不方便。

以上是為什麼Go函數中的指標賦值有時不影響原值?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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