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"
}
沒有「句柄」(指針)「容器」 - 你是通過值返回結構,而不是指向它的指針。 –