Fehlerbehandlung in Go: Behebung von „Typumschaltung bei Nicht-Schnittstellenwert nicht möglich“
Beim Versuch, die Typzusicherung in Go zu implementieren, haben Sie Möglicherweise wird die Fehlermeldung angezeigt: „Schalter für Nicht-Schnittstellenwert kann nicht eingegeben werden.“ Dieser Fehler tritt auf, wenn versucht wird, einen Typwechsel für einen Wert durchzuführen, der kein Schnittstellentyp ist.
Beachten Sie den folgenden Codeausschnitt:
package main import "fmt" import "strconv" type Stringer interface { String() string } type Number struct { v int } func (number *Number) String() string { return strconv.Itoa(number.v) } func main() { n := &Number{1} switch v := n.(type) { case Stringer: fmt.Println("Stringer:", v) default: fmt.Println("Unknown") } }
Beim Ausführen dieses Codes werden Sie auf Folgendes stoßen Fehler „Schalter bei Nicht-Schnittstellenwert kann nicht eingegeben werden“ Um dieses Problem zu lösen, müssen wir die Variable n in einen Schnittstellentyp{} umwandeln, bevor wir den Typwechsel durchführen.
switch v := interface{}(n).(type)
Diese Umwandlung wandelt den konkreten Typ von n (*Number) in den Schnittstellentyp interface{ um. }. Schnittstellen in Go fungieren als Vertrag und ermöglichen die Speicherung und den Zugriff auf beliebige Werte über gängige Methoden. Indem wir n in interface{} umwandeln, können wir dann den Typwechsel für den resultierenden Schnittstellenwert durchführen.
Wenn wir den geänderten Code ausführen, wird er wie erwartet erfolgreich „Stringer: 1“ ausgeben. Dies zeigt, dass die Typzusicherung in Go erfordert, dass der Wert ein Schnittstellentyp ist, und dass die Umwandlung in interface{} Typwechsel bei Nicht-Schnittstellenwerten ermöglicht.
Das obige ist der detaillierte Inhalt vonWarum erhalte ich in Go die Fehlermeldung „Einschalten des Nicht-Schnittstellenwerts kann nicht eingegeben werden'?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!