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") }
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()
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!