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
Linda HamiltonOriginal
2024-12-30 18:17:11794Durchsuche

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)

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!

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