Saltar al contenido principal
Publicado el

struct en Go

Compartir:

Introducción

En Go, un "struct" es una colección compuesta de campos que permite agrupar variables de diferentes tipos. Los structs son extremadamente útiles para definir y crear tipos de datos personalizados, proporcionando una manera organizada de representar entidades y sus atributos.

Definiendo e Inicializando structs

Para definir un struct, usamos la palabra clave type seguida del nombre del struct y la palabra clave struct:

type Persona struct {
  Nombre string
  Edad   int
  Email  string
}

Para inicializar un struct, podemos asignar valores a sus campos utilizando la sintaxis de llaves:

p := Persona{"Nelson", 28, "[email protected]"}

O usando los nombres de los campos:

p := Persona{
  Nombre: "Nelson",
  Edad:   28,
  Email:  "[email protected]",
}

Accediendo a los Campos del struct

Para acceder a un campo específico del struct, utilizamos el operador .:

nombre := p.Nombre  // "Nelson"
edad   := p.Edad    // 28

Structs Anidados

Es posible tener structs dentro de otros structs, una característica que puede ser útil para representar relaciones jerárquicas o complejas:

type Direccion struct {
  Calle string
  Ciudad string
  Pais  string
}

type Persona struct {
  Nombre    string
  Edad      int
  Ubicacion Direccion
}

Punteros a structs

Al igual que otras variables en Go, los structs también pueden ser referenciados mediante punteros:

punteroAPersona := &p
punteroAPersona.Nombre = "Pedro"  // Cambia el nombre en el struct original

Métodos y structs

En Go, podemos definir métodos específicos para structs, permitiendo que operaciones específicas sean realizadas con o sobre esos structs:

func (p Persona) Presentarse() string {
  return "Hola, mi nombre es " + p.Nombre
}

mensaje := p.Presentarse()  // "Hola, mi nombre es Nelson"

Conclusión

Los structs en Go son herramientas poderosas y flexibles que nos permiten crear representaciones claras y organizadas de entidades y sus atributos. Dominar los structs es fundamental para cualquier programador de Go que desee crear aplicaciones robustas y bien estructuradas.

Happy coding!