I have an instance of a struct that has an array field. When a goroutine replaces the array on the instance, all the other handles to that instance still have the original array. Why is this? What should I change so that the instance of Container
below will reflect the change made on the goroutine?
A simple example is also reflected here: 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"
}