ich seltsames Verhalten im folgenden Code sehe:Golang Struktur bekommt anderen Wert vom Eingang
type A struct {
D []int8
}
func main() {
a := A{D: make([]int8, 0)}
a.D = append(a.D, 0)
b := a
c := a
b.D = append(b.D, 1)
c.D = append(c.D, 2)
fmt.Println(a.D, b.D, c.D)
}
Ich Ausgabe
[0] [0 1] [0 2]
Allerdings habe ich
[0] [0 2] [0 2]
zu erwarten
Wer weiß warum ...?
p.s. Wenn ich die Zeile "a.D = append (a.D, 0)" auskommentiere oder den Typ von D von "[] int8" zu "[] int" ändere, habe ich bekommen, was ich erwartet habe. Seltsam ...
So viele Duplikate dieser Frage. Informieren Sie sich über Go und Zeiger. Ich habe gerade eine Frage ähnlich wie vor ein paar Stunden beantwortet. Sehen Sie dieses Beispiel https://play.golang.org/p/ZThHrP0pds und lesen Sie meine Antwort auf diese Frage. http://stackoverflow.com/questions/43922965/i-cannot-modified-the-item-after-appending-to-array Ich werde ein gutes Duplikat aufspüren, um dies zu verknüpfen. – RayfenWindspear
Mögliches Duplikat [Go Variablen überschrieben werden (Bug?)] (Http://stackoverflow.com/questions/20277305/go-variables-being-overwritten-bug) – RayfenWindspear