1
我有一个具有数组字段的结构实例。当goroutine替换实例上的数组时,该实例的所有其他句柄仍然具有原始数组。为什么是这样?我应该改变什么,以便下面Container
的实例将反映在goroutine上所做的更改?在实例中替换的字符串数组未反映
一个简单的例子也体现在这里:https://play.golang.org/p/dXVKN6o8aP
func Create() Container {
instance := *&Container{
values: []string{"initial value"},
}
go func() {
instance.values = []string{"modified value"}
fmt.Print("values updated")
}()
return instance
}
func main() {
instance := Create()
time.Sleep(100 * time.Millisecond)
fmt.Printf("%[1]v", instance.values)
//prints "initial value", but I expected "modified value"
}
没有“句柄”(指针)“容器” - 你是通过值返回结构,而不是指向它的指针。 –