Heim > Backend-Entwicklung > Golang > Wie tippe ich Assert-Slices von Schnittstellenwerten in Go ein?

Wie tippe ich Assert-Slices von Schnittstellenwerten in Go ein?

Patricia Arquette
Freigeben: 2024-12-07 16:40:13
Original
848 Leute haben es durchsucht

How to Type Assert Slices of Interface Values in Go?

Typ Asserting Slices of Interface Values

Beim Versuch, Asserting einen Slice von Interface-Werten einzugeben, kann ein Fehler ähnlich der folgenden auftreten:

invalid type assertion: args.([]Symbol) (non-interface type []Node on left)
Nach dem Login kopieren

Dieser Fehler tritt auf, weil Slices unterschiedliche Nicht-Schnittstellentypen sind. Um zu verstehen, warum, untersuchen wir die Natur von Schnittstellen in Go.

Schnittstellen sind Typen, die eine Reihe von Methoden definieren, die ein Wert implementieren muss. Wenn Sie eine Variable eines Schnittstellentyps erstellen, ist ihr dynamischer Typ nicht festgelegt, sodass sie Werte jedes beliebigen Typs enthalten kann, der die Schnittstelle implementiert.

Ein Slice ist jedoch eine Sammlung von Werten eines bestimmten Typs. das ist固定 von einem Typ. Es verfügt über keine Methoden und ist somit kein Schnittstellentyp. Daher macht es keinen Sinn anzunehmen, dass ein Slice von Schnittstellenwerten auch eine Schnittstelle ist.

Die Lösung

Um diesen Fehler zu beheben, können Sie die Werte im Slice explizit in die gewünschten konvertieren Typ, wie im folgenden Code:

symbols := make([]Symbol, len(args))
for i, arg := range args { symbols[i] = arg.(Symbol) }
Nach dem Login kopieren

Dieser Code erstellt ein neues Segment des gewünschten Typs und durchläuft das ursprüngliche Segment, wobei er jeden Wert in den gewünschten Typ konvertiert. Dadurch können Sie die typzugesicherten Werte in Ihrem Code verwenden, ohne dass der Typzusicherungsfehler auftritt.

Das obige ist der detaillierte Inhalt vonWie tippe ich Assert-Slices von Schnittstellenwerten in Go ein?. 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