Heim > Backend-Entwicklung > Golang > Wie lösche ich Elemente aus einem in einer Go-Schnittstelle gespeicherten Slice?

Wie lösche ich Elemente aus einem in einer Go-Schnittstelle gespeicherten Slice?

Susan Sarandon
Freigeben: 2024-11-16 07:49:03
Original
652 Leute haben es durchsucht

How to Delete Elements from a Slice Stored Within a Go Interface?

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)
Nach dem Login kopieren

Ausgabe:

&[0 one 3 4]
Nach dem Login kopieren

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!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage