為什麼使用Go的Range關鍵字修改數組元素失敗,數組索引如何提供解決方案?
Dec 17, 2024 am 11:23 AM使用陣列索引取代範圍值進行元素修改
在Go 程式設計中,range 關鍵字會迭代集合並傳回鍵以及每個元素的值的副本。此行為可能會阻礙循環內的值修改。以下範例示範了此問題:
package main import "fmt" type MyType struct { field string } func main() { var array [10]MyType // Attempt to modify field using range values: for _, e := range array { e.field = "foo" } // Verify that field hasn't been modified: for _, e := range array { fmt.Println(e.field) fmt.Println("--") } }
登入後複製
在此程式碼中,我們嘗試使用範圍循環修改陣列中每個元素的欄位。但是,由於範圍傳回值的副本,因此數組中的實際元素保持不變。這會導致所有欄位值保持為空。
解決方案:使用陣列索引
要解決此問題並修改實際元素,您應該使用陣列索引而不是range 循環傳回的值。修改後的程式碼如下:
import "fmt" type MyType struct { field string } func main() { var array [10]MyType // Modify field using array indices: for idx, _ := range array { array[idx].field = "foo" } // Verify that field has been modified: for _, e := range array { fmt.Println(e.field) fmt.Println("--") } }
登入後複製
透過使用每個元素的索引而不是值,我們可以直接存取和修改陣列中的實際元素。這可確保欄位值正確更新。
以上是為什麼使用Go的Range關鍵字修改數組元素失敗,數組索引如何提供解決方案?的詳細內容。更多資訊請關注PHP中文網其他相關文章!
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱門文章
擊敗分裂小說需要多長時間?
3 週前
By DDD
倉庫:如何復興隊友
3 週前
By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒險:如何獲得巨型種子
3 週前
By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
1 週前
By 尊渡假赌尊渡假赌尊渡假赌
公眾號網頁更新緩存難題:如何避免版本更新後舊緩存影響用戶體驗?
3 週前
By 王林

熱門文章
擊敗分裂小說需要多長時間?
3 週前
By DDD
倉庫:如何復興隊友
3 週前
By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒險:如何獲得巨型種子
3 週前
By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
1 週前
By 尊渡假赌尊渡假赌尊渡假赌
公眾號網頁更新緩存難題:如何避免版本更新後舊緩存影響用戶體驗?
3 週前
By 王林

熱門文章標籤

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)