Struct en GO

Las estructuras en GO son herramientas fundamentales para agrupar datos relacionados y crear tipos de datos personalizados. Te permiten organizar tu código de forma eficiente, mejorando la legibilidad y el mantenimiento.

En este artículo, exploraremos en profundidad el mundo de las estructuras en GO, desde su definición hasta su uso con ejemplos prácticos.

Definición de una estructura:

Las estructuras se definen usando la palabra clave struct seguida del nombre de la estructura y una lista de campos (entre llaves). Cada campo tiene un nombre y un tipo de dato.


type Persona struct {
  Nombre string
  Apellido string
  Edad int
}

Lenguaje del código: Go (go)

Creación de una variable de tipo estructura:

Para crear una variable de tipo estructura, se utiliza el nombre de la estructura seguido de la palabra clave new.


persona := Persona{
  Nombre: "Bard",
  Apellido: "GO",
  Edad: 1,
}

Lenguaje del código: Go (go)

Acceso a los campos de una estructura:

Se puede acceder a los campos de una estructura utilizando el operador punto (.).


nombre := persona.Nombre
fmt.Println(nombre) // Imprime "Bard"

Lenguaje del código: Go (go)

Modificación de los campos de una estructura:

Se pueden modificar los campos de una estructura utilizando el operador punto (.).


persona.Edad = 2
fmt.Println(persona.Edad) // Imprime "2"

Lenguaje del código: Go (go)

Empaquetado de estructuras:

Las estructuras se pueden empaquetar en otras estructuras para crear estructuras más complejas.


type Direccion struct {
  Calle string
  Numero int
  Ciudad string
}

type Usuario struct {
  Persona
  Direccion
}

Lenguaje del código: Go (go)

Métodos en estructuras:

Las estructuras pueden tener métodos, que son funciones asociadas a la estructura.


type Persona struct {
  Nombre string
  Apellido string
  Edad int

  Saludar() string {
    return fmt.Sprintf("Hola, mi nombre es %s %s", Nombre, Apellido)
  }
}

persona := Persona{
  Nombre: "Bard",
  Apellido: "GO",
  Edad: 1,
}

saludo := persona.Saludar()
fmt.Println(saludo) // Imprime "Hola, mi nombre es Bard GO"

Lenguaje del código: Go (go)

Punteros a estructuras:

Se pueden usar punteros para trabajar con estructuras de forma más eficiente.


persona := Persona{
  Nombre: "Bard",
  Apellido: "GO",
  Edad: 1,
}

personaPtr := &persona

// Modificar la edad usando el puntero
personaPtr.Edad = 2

fmt.Println(persona.Edad) // Imprime "2"

Lenguaje del código: Go (go)

Serialización de estructuras:

Las estructuras se pueden serializar a diferentes formatos como JSON o XML.


json, err := json.Marshal(persona)
if err != nil {
  panic(err)
}

fmt.Println(string(json)) // Imprime {"Nombre":"Bard","Apellido":"GO","Edad":2}

Lenguaje del código: Go (go)

Conclusión:

Las estructuras en GO son una herramienta poderosa para organizar y trabajar con datos. Dominar las diferentes características de las estructuras te ayudará a crear programas más robustos y fáciles de mantener.

Recuerda:

  • La práctica es la mejor forma de aprender a usar las estructuras en GO.
  • Experimenta con diferentes tipos de estructuras y casos de uso.
  • Divide tu código en estructuras pequeñas y manejables.
  • Documenta tus estructuras para que sean más fáciles de entender.