Heim > Backend-Entwicklung > Golang > Wie kann ich den zugrunde liegenden Typ eines Go-„interface{}'-Werts bestimmen?

Wie kann ich den zugrunde liegenden Typ eines Go-„interface{}'-Werts bestimmen?

Patricia Arquette
Freigeben: 2024-12-20 19:36:12
Original
246 Leute haben es durchsucht

How Can I Determine the Underlying Type of a Go `interface{}` Value?

Den „echten“ Typ von Schnittstellenwerten in Go abrufen

Der Schnittstellentyp {} von Go ist eine vielseitige Möglichkeit, Werte jeglicher Art zu verarbeiten . Allerdings kann es schwierig sein, den tatsächlichen Typ eines interface{}-Werts zu bestimmen. Hier sind einige Ansätze:

Typzusicherungen:

Typzusicherungen sind, wie im bereitgestellten Beispiel gezeigt, die einfachste Methode. Mit der . (Punkt)-Operator können Sie versuchen, den Schnittstellenwert in einen bestimmten Typ umzuwandeln. Wenn beispielsweise tmp, ok := w.(int) versucht, w in einen int umzuwandeln, und speichert bei Erfolg den Wert in tmp, während ok auf true gesetzt wird.

Typschalter:

Typschalter bieten eine umfassendere Möglichkeit, mehrere Typen zu verarbeiten. Ähnlich wie Switch-Case-Anweisungen können Typschalter den Typ eines Interface{}-Werts überprüfen und je nach Typ unterschiedliche Codepfade ausführen. Der folgende Codeausschnitt testet beispielsweise, ob myInterface ein int, float64 oder string ist:

switch v := myInterface.(type) {
case int:
    fmt.Printf("Integer: %v", v)
case float64:
    fmt.Printf("Float64: %v", v)
case string:
    fmt.Printf("String: %v", v)
default:
    fmt.Printf("Unknown type")
}
Nach dem Login kopieren

Abrufen der String-Darstellung eines Typs:

Zu erhalten Für die Zeichenfolgendarstellung eines Typs verwenden Sie das Reflect-Paket. Rufen Sie „reflect.TypeOf(value).Name()“ für den Schnittstellenwert auf, um seinen Typnamen als Zeichenfolge zu erhalten.

typeName := reflect.TypeOf(w).Name()
Nach dem Login kopieren

Werte mithilfe der Typdarstellung konvertieren:

Derzeit gibt es keine direkte Möglichkeit, einen Wert mithilfe seiner Zeichenfolgentypdarstellung zu konvertieren. Allerdings können externe Bibliotheken wie github.com/bluele/gcache bei dieser Aufgabe helfen, indem sie Funktionen zum Konvertieren von Strings in Typen bereitstellen.

Das obige ist der detaillierte Inhalt vonWie kann ich den zugrunde liegenden Typ eines Go-„interface{}'-Werts bestimmen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage