【发布时间】:2016-11-03 06:45:50
【问题描述】:
在 golang 中,我的理解是 array 切片类型是引用。我遇到了一个问题,golang 的行为就像是在复制数据,而不是传递引用。
https://play.golang.org/p/EfEOMV_wcS
type Temp struct {
Id string `json:"id"`
Lost string `json:"lost"`
}
func makeFoo1() []Temp {
foos := make([]Temp, 0)
foos = append(foos, Temp{Id: "foo"})
return foos
}
func makeFoo2() []Temp {
foos := makeFoo1()
for _, t := range foos {
t.Lost = "lost"
}
return foos
}
func main() {
j, _ := json.Marshal(makeFoo2())
fmt.Printf("%s\n", j)
}
这个输出是[{"id":"foo","lost":""}]
如何在 makeFoo2 中赋值t.Lost = "..." 以免丢失?或者我想真正的问题是如何确保数组是引用而不是值?
【问题讨论】:
标签: arrays go pass-by-reference