我看到该范围返回键和值的“副本”。有没有办法让该范围返回该商品的地址?例
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("--") } }
http://play.golang.org/p/AFOGG9NGpx
这里“ field”没有被修改,因为range发送了field的副本,我是否必须使用index或是否有其他方法可以修改值?
谢谢阅读。
简短而直接的答案: 不,使用数组索引而不是值
因此,上面的代码变为:
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("--") } }