迭代一系列值時,通常希望修改原始值而不是僅使用副本。但是,預設情況下,range 構造會傳回每個值的副本。
package main import "fmt" type MyType struct { field string } func main() { var array [10]MyType for _, e := range array { e.field = "foo" } for _, e := range array { fmt.Println(e.field) fmt.Println("--") } }
在上面的程式碼中,陣列中每個元素的「field」欄位沒有被修改,因為 range 將值複製到e 變數。
要修改原始值,不能使用範圍構造來迭代這些值。相反,您必須使用數組索引。
package main import "fmt" type MyType struct { field string } func main() { var array [10]MyType for idx, _ := range array { array[idx].field = "foo" } for _, e := range array { fmt.Println(e.field) fmt.Println("--") } }
透過使用陣列索引,您可以直接存取陣列中的原始值,並可以根據需要修改它們。
以上是Go中如何在範圍迭代過程中修改原始值?的詳細內容。更多資訊請關注PHP中文網其他相關文章!