Ich habe eine Instanz einer Struktur, die ein Array-Feld hat. Wenn eine goroutine das Array auf der Instanz ersetzt, haben alle anderen Handles dieser Instanz immer noch das ursprüngliche Array. Warum ist das? Was sollte ich ändern, damit die Instanz Container
die Änderung widerspiegelt, die an der Goroutine vorgenommen wurde?String-Array in der Instanz ersetzt wird nicht reflektiert
Ein einfaches Beispiel ist auch hier wider: 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"
}
Es gibt keine "Handles" (Zeiger) zu "Container" - Sie geben die Struktur nach Wert zurück, nicht einen Zeiger darauf. –