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

Wie tippe ich Assert ein Slice von Schnittstellenwerten in Go richtig ein?

Linda Hamilton
Freigeben: 2024-12-30 18:17:11
Original
790 Leute haben es durchsucht

How to Correctly Type Assert a Slice of Interface Values in Go?

Typ-Assertion von Schnittstellen-Slice-Werten

Beim Typ-Assertionsversuch wird ein Slice von Schnittstellenwerten, z. B. []Node, in einen anderen Typ, z. B. []Symbol, übernommen , kann die Fehlermeldung „Ungültige Typzusicherung“ auftreten. Dieser Fehler tritt auf, weil ein Slice ein eindeutiger Nicht-Schnittstellentyp ist. Die Typprüfung basiert auf der Annahme, dass der dynamische Typ einer Variablen für Schnittstellentypen festgelegt bleibt, nicht jedoch für Slices oder andere Nicht-Schnittstellentypen.

Daher schlägt die Anweisung args.([]Symbol) im bereitgestellten Code fehl weil args vom Typ []Node ist, was kein Schnittstellentyp ist. Um „assertion“ richtig einzugeben, sollten Sie zunächst die Slice-Elemente in den gewünschten Typ konvertieren, wie im folgenden Code gezeigt:

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

Dieser geänderte Code erstellt ein Array von Symbolwerten und iteriert über den ursprünglichen []Node Slice, Typ, der jedes Element dem Symbol zuordnet. Nachdem Sie das gewünschte []Symbol-Slice erhalten haben, können Sie die erforderlichen Vorgänge ausführen, ohne dass Typzusicherungsfehler auftreten.

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