我看到 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("--")
}
}
http://play.golang.org/p/AFOGG9NGpx
这里“字段”没有被修改,因为范围发送了字段的副本。我必须使用索引还是有任何其他方法可以修改该值?
原文由 Epitouille 发布,翻译遵循 CC BY-SA 4.0 许可协议
简短而直接的回答: 不,使用数组索引而不是值
于是上面的代码就变成了: