Typschalterfehler verstehen
In Go führt die Verwendung eines Typschalters für eine Nicht-Schnittstellenvariable zu der Fehlermeldung „Typschalter kann nicht aktiviert werden“. Nicht-Schnittstellenwert. Um dieses Problem zu beheben, muss die Variable in einen geeigneten Schnittstellentyp umgewandelt werden, bevor der Typwechsel durchgeführt wird.
Im angegebenen Beispiel versucht der Code, einen Typwechsel für die Variable n durchzuführen, bei der es sich um eine Instanz handelt der Zahlenstruktur. Allerdings implementiert die Number-Struktur keine Schnittstelle und kann daher nicht direkt in einem Typwechsel verwendet werden.
Fehler beheben
Um den Fehler zu beheben, müssen Sie Folgendes tun Wandeln Sie zunächst n in den Typ interface{} um, der eine leere Schnittstelle darstellt. Dadurch wird n in einen Wert umgewandelt, der jeden Typ enthalten kann. Anschließend können Sie innerhalb des Typwechsels den tatsächlichen Typ des zugrunde liegenden Werts mithilfe des Schlüsselworts type bestätigen.
So würde der korrigierte Code aussehen:
import ( "fmt" "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 := interface{}(n).(type) { case Stringer: fmt.Println("Stringer:", v) default: fmt.Println("Unknown") } }
Mit dieser Änderung wird der Code gibt erfolgreich „Stringer: 1“ aus.
Das obige ist der detaillierte Inhalt vonWarum gibt mein Go-Code den Fehler „Schalter kann bei Nicht-Schnittstellenwert nicht eingegeben werden' aus?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!