So finden Sie einen Objekttyp in Go
Datentypen geben den Typ an, der einer gültigen Go-Variablen zugeordnet ist. Es gibt vier Kategorien von Datentypen in Go, die wie folgt aussehen:
-
Basistyp: Zahlen, Zeichenketten und Booleans
-
Aggregierender Typ: Array und Structs
-
Referenztyp: Zeiger, Schnitte, Map, Funktionen und Kanäle
-
Schnittstellentyp
Wir können den Datentyp eines Objekts in Go unter Verwendung von Stringformatierung
, reflect
-Paket und Typ-Assertions
finden.
Stringformatierung zum Finden des Datentyps in Go
Wir können die Printf
-Funktion des Pakets fmt
mit einer speziellen Formatierungsoption verwenden. Die verfügbaren Formatierungsoptionen zur Anzeige von Variablen mit fmt
sind
formatieren | Beschreibung |
---|---|
%v |
Den Variablenwert in einem Standardformat drucken |
%+v |
Fügen Sie Feldnamen mit dem Wert |
%#v |
eine Go-Syntax-Darstellung des Wertes |
%T |
eine Go-Syntax-Darstellung des Typs des Wertes |
%% |
ein wörtliches Prozentzeichen; verbraucht keinen Wert |
Wir benutzen das %T
Flag im fmt
Paket, um einen Objekttyp in Go zu finden.
package main
import "fmt"
func main() {
i := 18
fmt.Printf("Datatype of i : %T\n", i)
s := "Dixya Lyaho"
fmt.Printf("Datatype of s : %T\n", s)
f := 25.32
fmt.Printf("Datatype of f : %T\n", f)
}
Ausgabe:
Datatype of i : int
Datatype of s : string
Datatype of f : float64
reflect
-Paket
Wir können auch das Paket reflect
verwenden, um den Datentyp eines Objekts zu finden. Die Funktion Typeof
des Pakets reflect
gibt einen Datentyp zurück, der mit .String()
in einen string
umgewandelt werden könnte.
package main
import (
"fmt"
"reflect"
)
func main() {
o1 := "string"
o2 := 10
o3 := 1.2
o4 := true
o5 := []string{"foo", "bar", "baz"}
o6 := map[string]int{"apple": 23, "tomato": 13}
fmt.Println(reflect.TypeOf(o1).String())
fmt.Println(reflect.TypeOf(o2).String())
fmt.Println(reflect.TypeOf(o3).String())
fmt.Println(reflect.TypeOf(o4).String())
fmt.Println(reflect.TypeOf(o5).String())
fmt.Println(reflect.TypeOf(o6).String())
}
Ausgabe:
string
int
float64
bool
[]string
map[string]int
Methode type
Assertions
Die Typ-Assertion-Methode gibt eine boolesche Variable zurück, um zu sagen, ob die Assertion-Operation erfolgreich ist oder nicht. Wir verwenden einen Typ Schalter
, um mehrere Typ-Assertions in Serie durchzuführen, um den Datentyp des Objekts zu finden.
package main
import (
"fmt"
)
func main() {
var x interface{} = 3.85
switch x.(type) {
case int:
fmt.Println("x is of type int")
case float64:
fmt.Println("x is of type float64")
default:
fmt.Println("x is niether int nor float")
}
}
Ausgabe:
x is of type float64
Suraj Joshi is a backend software engineer at Matrice.ai.
LinkedIn