Planteamiento del problema: se tiene una estructura definida y se requiere extraer los datos y el tipo de dato registrado en ella usando el lenguaje Go.
Creamos el siguiente árbol de programa:
Definamos la siguiente estructura alamcenada en el archivo models.go en la carp
package model
import "time"
type Usuario struct{
Alias string
Correo string
Puntaje int
Creado time.Time
Activo bool
}
En el código principal llamamos el paquete model que contiene la estructura y le agregamos valores.
package main
import(
"fmt"
"reflect"
md "strtest/model"
)
func main(){
//forma rapida de inicializacion
//requiere importar libreria time
//u := md.Usuario{"Red", "red@test.com", 90, time.Now(),false}
//forma extensa
var u md.Usuario
u.Alias = "Red"
u.Correo = "red@test.com"
u.Puntaje = 90
v := reflect.ValueOf(u)
typeOf := v.Type()
for i := 0; i < v.NumField(); i++ {
fmt.Print("Campo: ",typeOf.Field(i).Name)
fmt.Print(" Valor: ", v.Field(i).Interface())
fmt.Println(" Tipo: ", typeOf.Field(i).Type)
}
}
Empleamos la librería reflect que permite manipular objetos con tipos arbitrarios (definidos por el usuario).
Empleamos el ciclo for para recorrer todos los elmentos de la estructura usando la función NumField() también perteneciente al la librería relfect, la cual retorna la cantidad de campos en una estructura.
Obtenemos como resultado el nombre del campo, el dato almacenado en el campo y el tipo de campo de cada uno de los elementos de la estructura.
Este código puede ser útil para validar o gestionar campos de estructuras en diferentes contextos.
Hasta la proxima!
Top comments (0)