Go 函數中的指標賦值:為什麼會產生不同的結果?
在 Go 中將指標傳遞給函數時,了解如何進行指標賦值至關重要。使用指標及其對原始值的影響。本討論圍繞著一個程式碼片段展開,該程式碼片段將指標傳遞給結構體 Test,旨在修改其 Value 欄位。
第一個程式碼片段,儘管嘗試透過將新的 Test 結構體指派給指標來變更 Value 欄位(*p = Test{4}),無法變更實際值。這是因為它只是重新分配指標變數 p,而不是指向的值。 f() 函數中的 p 變數獨立存在,對 main() 中 p 變數所指向的值沒有影響。
相反,第二個程式碼片段,其中 p.Value明確設定為 4,成功修改 Value 欄位。這是因為 運算子取消引用指針,從而允許存取和修改實際指向的值。
作為補充說明,可以透過傳遞來修改儲存在 main() 函數的指標變數中的位址它的位址 (*) 到 f() 函數。然而,與直接使用 p.Value.
修改指向值相比,這種方法效率較低且不方便。以上是為什麼Go函數中的指標賦值有時不影響原值?的詳細內容。更多資訊請關注PHP中文網其他相關文章!