DEV Community

Carlos Andres Lopez
Carlos Andres Lopez

Posted on • Edited on

Go struct: Recorrer elementos de una estructura

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:

Estructura de archivos

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
}
Enter fullscreen mode Exit fullscreen mode

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)
  }
}
Enter fullscreen mode Exit fullscreen mode

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.

Salida del programa

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)