Löschen eines Elements aus einem typbestätigten Slice von Schnittstellen
Beim Bearbeiten eines in eine Schnittstelle eingeschlossenen Slice-Werts in Go wird ein Element entfernt direkt aus der Scheibe ist nicht möglich. Dieser Vorgang führt zu dem Fehler „Wert kann nicht zugewiesen werden“, da durch die Typzusicherung eine Kopie des in der Schnittstelle gespeicherten Werts erstellt wird.
Durch die Zuweisung eines Werts zu einer typzugesicherten Schnittstelle wird der in der Schnittstelle gespeicherte ursprüngliche Wert nicht geändert Schnittstelle. Stattdessen wird nur die aus der Typzusicherung erhaltene Kopie geändert. Um diese Einschränkung zu umgehen, sollten Sie erwägen, einen Slice-Zeiger innerhalb der Schnittstelle (*[]interface{}) zu speichern.
Zeigertypen ermöglichen Änderungen am Zeigerwert und nicht am Zeiger selbst. Dies wird unten demonstriert:
s := []interface{}{0, "one", "two", 3, 4} var value interface{} = &s // Perform removal by accessing the pointed slice sp := value.(*[]interface{}) i := 2 *sp = append((*sp)[:i], (*sp)[i+1:]...) fmt.Println(value)
Ausgabe:
&[0 one 3 4]
Durch Typzusicherung der Schnittstelle zu einem Slice-Zeiger ([]interface{}) und Verwendung des Indirektionsoperators (), wir können den spitzen Slice-Wert direkt ändern.
Das obige ist der detaillierte Inhalt vonWie lösche ich Elemente aus einem in einer Go-Schnittstelle gespeicherten Slice?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!