An Slice in Go Struct anhängen
In diesem Codeausschnitt versucht der Benutzer, zwei Strukturen zu implementieren: MyBoxItem und MyBox. Die Absicht besteht darin, mithilfe der AddItem-Methode ein Element zur MyBox-Struktur hinzuzufügen. Die aktuelle Implementierung funktioniert jedoch nicht.
Das Problem liegt in der AddItem-Methode:
func (box *MyBox) AddItem(item MyBoxItem) []MyBoxItem { return append(box.Items, item) }
Standardmäßig wird der Slice-Wert nach Wert und nicht nach Referenz in die Parameter kopiert . Daher werden alle am Slice des Parameters vorgenommenen Änderungen nicht im Original-Slice widergespiegelt. Um dies zu beheben, muss dem ursprünglichen Slice das Ergebnis der Append-Funktion zugewiesen werden.
func (box *MyBox) AddItem(item MyBoxItem) []MyBoxItem { box.Items = append(box.Items, item) return box.Items }
Zusätzlich ist die AddItem-Methode für einen Zeiger auf den MyBox-Typ (*MyBox) definiert, daher sollten Sie sie aufrufen als box.AddItem(item1) in der Hauptfunktion.
Das obige ist der detaillierte Inhalt vonWie kann ich innerhalb der Methode einer Go-Struktur korrekt an ein Slice anhängen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!