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!