Heim >Backend-Entwicklung >Golang >Wie tippe ich Assert sicher aus einem Abschnitt von Schnittstellenwerten in Go ein?
Geben Sie „Assertion“ aus einem Segment von Schnittstellenwerten ein
In Go wird versucht, „assertion“ aus einem Segment von Schnittstellenwerten einzugeben, z. B. [] Knoten zu []Symbol, kann zu einem Fehler führen. Während Symbol die Node-Schnittstelle implementiert, ist der Slice []Node kein Schnittstellentyp.
Die Fehlermeldung „ungültige Typzusicherung: args.([]Symbol) (Nicht-Schnittstellentyp []Node auf der linken Seite )“ gibt an, dass das Segment der Schnittstellenwerte ([]Node) nicht direkt auf einen Schnittstellentyp angewendet werden kann ([]Symbol).
Grund
Ein Slice ist ein eindeutiger Nicht-Schnittstellentyp mit einem eigenen Satz von Methoden. Im Gegensatz zu einer Schnittstelle erbt es keine Methoden von den darin enthaltenen Elementen. Daher macht es keinen Sinn anzunehmen, dass ein Abschnitt von Schnittstellenwerten selbst eine Schnittstelle ist.
Lösung
Um in dieser Situation richtig „assertion“ einzugeben, können Sie Folgendes tun: Verwenden Sie eine Schleife, um jedes Element des Slice in den gewünschten Typ umzuwandeln. Zum Beispiel der folgende Code:
symbols := make([]Symbol, len(args)) for i, arg := range args { symbols[i] = arg.(Symbol) } fixed, rest := parseFormals(symbols)
Erstellt ein neues Segment von Symbolwerten und Symbolen und iteriert über das args-Slice, wobei jedes Element in einen Symboltyp konvertiert wird. Sie können dann Symbole für die weitere Verarbeitung verwenden.
Denken Sie daran, dass Typzusicherungen nur verwendet werden sollten, wenn Sie absolut sicher sind, dass die Behauptung erfolgreich ist. Andernfalls kann es zur Laufzeit zu einer Panik kommen.
Das obige ist der detaillierte Inhalt vonWie tippe ich Assert sicher aus einem Abschnitt von Schnittstellenwerten in Go ein?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!