Cómo encontrar un tipo de objeto en Go
Los tipos de datos especifican el tipo asociado a una variable Go válida. Hay cuatro categorías de tipos de datos en Go que son las siguientes:
-
Tipo básico: Números, cadenas y booleanos
-
Tipo de agregado: Matriz y estructura
-
Tipo de referencia: Punteros, cortes, mapas, funciones y canales
-
Tipo de interfaz
Podemos encontrar el tipo de datos de un objeto en Go usando el formatde cadena
, el paquete reflejo
y las afirmaciones de tipo
.
Formato de cadena para encontrar el tipo de datos en Go
Podemos usar la función Printf
del paquete fmt
con una opción de formato especial. Las opciones de formato disponibles para mostrar las variables usando fmt
son:
Formato | Descripción |
---|---|
%v |
Imprimir el valor de la variable en un formato predeterminado |
%+v |
Añade los nombres de los campos con el valor |
%#v |
una representación de la sintaxis de Go del valor |
%T |
una representación de la sintaxis Go del tipo de valor |
%% |
un signo de porcentaje literal; no consume ningún valor |
Usamos la bandera 1% T
en el paquete fmt
para encontrar un tipo de objeto en Go.
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)
}
Producción :
Datatype of i : int
Datatype of s : string
Datatype of f : float64
Paquete de reflexión
También podemos usar el paquete reflejo
para encontrar el tipo de datos de un objeto. La función Typeof
del paquete reflect
devuelve un tipo de datos que puede ser convertido en una cadena
con .String()
.
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())
}
Producción :
string
int
float64
bool
[]string
map[string]int
Método type assertions
El método de afirmación de tipo devuelve una variable booleana para decir si la operación de afirmación tiene éxito o no. Utilizamos un tipo switch
para hacer varias afirmaciones de tipo en serie para encontrar el tipo de datos del objeto.
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")
}
}
Producción :
x is of type float64
Suraj Joshi is a backend software engineer at Matrice.ai.
LinkedIn