Heim >Backend-Entwicklung >Golang >Wie ändere ich typbestätigte Schnittstellenabschnitte in Go?

Wie ändere ich typbestätigte Schnittstellenabschnitte in Go?

Mary-Kate Olsen
Mary-Kate OlsenOriginal
2024-11-24 22:29:11195Durchsuche

How to Modify Type-Asserted Slices of Interfaces in Go?

Manipulation typbestätigter Slices von Schnittstellen in Go

In Golang ermöglicht die Typzusicherung Entwicklern den Zugriff auf den zugrunde liegenden konkreten Typ eines Schnittstellenwerts . Es ist jedoch wichtig zu beachten, dass die Typzusicherung den ursprünglichen Schnittstellenwert nicht ändert. Dies kann problematisch sein, wenn versucht wird, Elemente aus einem Typ-Asserted-Slice von Schnittstellen zu entfernen.

Betrachten Sie das folgende Beispiel:

value := []interface{}{0, "one", "two", 3, 4}

Wenn wir versuchen, ein Element mit dem aus dem Slice zu entfernen Typzusicherung:

i := 2
value.([]interface{}) = append(value.([]interface{})[:i],
   value.([]interface{})[i+1:]...)

Wir werden auf einen Fehler stoßen, der besagt: „Kann dem Wert nicht zugewiesen werden (Typ []Schnittstelle {})“. Dies liegt daran, dass durch die Typzusicherung eine Kopie des Originalwerts erstellt wird und an der Kopie vorgenommene Änderungen keinen Einfluss auf das Original haben.

Um dieses Problem zu beheben, ist es notwendig, einen zugrunde liegenden Abschnitt von Schnittstellen zu ändern, anstatt Typ- behauptete Kopien. Dies kann erreicht werden, indem das Slice in einen Schnittstellenzeiger eingeschlossen wird:

value := []*[]interface{}{&[]interface{}{0, "one", "two", 3, 4}}

Die Verwendung des Zeigers ermöglicht es uns, das zugrunde liegende Slice zu ändern:

sp := value[0]
i := 2
*sp = append((*sp)[:i], (*sp)[i+1:]...)

In diesem Fall die vorgenommenen Änderungen an Die spitzen Slices spiegeln sich im ursprünglichen Schnittstellenwert wider:

fmt.Println(value)
// Output: [*[]interface {0 one 3 4}]

Durch die Verwendung von Schnittstellenzeigern können Entwickler typbestätigte Slices von Schnittstellen manipulieren, ohne darauf zu stoßen Zuordnungsfehler.

Das obige ist der detaillierte Inhalt vonWie ändere ich typbestätigte Schnittstellenabschnitte in Go?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
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