Heim  >  Artikel  >  Backend-Entwicklung  >  Warum erhalte ich in Go die Fehlermeldung „Einschalten des Nicht-Schnittstellenwerts kann nicht eingegeben werden'?

Warum erhalte ich in Go die Fehlermeldung „Einschalten des Nicht-Schnittstellenwerts kann nicht eingegeben werden'?

Patricia Arquette
Patricia ArquetteOriginal
2024-11-09 20:32:02700Durchsuche

Why Am I Getting

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!

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