我看到该范围返回的键和值的“复制”.有没有办法让这个范围返回物品的地址?例
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发送字段的副本,
我必须使用索引,还是有其他方式修改值?
谢谢阅读.
短小直接回答:不,使用数组索引而不是值
所以上面的代码变成:
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("--") } }
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。