Estructuras en Go: definición y uso de datos relacionados

Clase 19 de 29Curso de Go

Resumen

Crear y manejar estructuras de datos o structs en Go resulta sencillo y muy útil para organizar información relacionada en nuestras aplicaciones. Estas estructuras, equivalentes a las clases en programación orientada a objetos, te permiten definir propiedades específicas y manipularlas eficazmente con funciones y métodos adecuados.

¿Qué son las estructuras o structs en Go?

Las estructuras o structs en Go son agrupaciones de propiedades o campos que representan entidades o elementos concretos. La sintaxis básica para definir una estructura es fácil de aprender. Observa el ejemplo:

type persona struct {
  nombre string
  edad    int
}

Con esta forma, indicamos claramente que "persona" tiene dos propiedades: nombre y edad.

¿Cómo declarar e inicializar una estructura en Go?

Declarar un objeto de tipo struct es intuitivo gracias a la inicialización implícita:

nuevoIndividuo := persona{
  nombre: "Marcela",
  edad: 42,
}

También puedes realizar dicha declaración de manera aún más sencilla, especificando las propiedades en orden:

individuo := persona{"Santiago", 44}

Ambos modos de declaración son válidos y prácticos, continúa usando el que te resulte más conveniente.

¿Qué ocurre cuando omites propiedades en una estructura?

Si decides omitir alguna propiedad al crear un nuevo objeto, el lenguaje Go automáticamente asignará valores por defecto:

  • Para cadenas (strings), el valor por defecto es una cadena vacía: "".
  • Para enteros y otros valores numéricos, el valor por defecto es 0.

Ejemplo:

personaSinEdad := persona{nombre: "Felipe"}
// Aquí la edad será automáticamente asignada como 0

¿Cómo utilizar funciones para manipular structs en Go?

Puedes manejar estas estructuras mediante funciones específicas, por ejemplo, creando una función llamada nuevaPersona:

func nuevaPersona(nombre string, edad int) *persona {
  nuevoIndividuo := persona{
    nombre: nombre,
  }
  nuevoIndividuo.edad = 42  // valor asignado explícitamente

  return &nuevoIndividuo  // retorna un puntero a persona
}

Este método funciona usando punteros, permitiendo un rendimiento óptimo al evitar copias innecesarias en memoria.

¿Cómo manipular propiedades individuales?

Actualizar o consultar propiedades concretas es simple:

personaEjemplo := persona{"Miranda", 7}
personaEjemplo.edad = 8  // actualiza la edad
fmt.Println(personaEjemplo.edad)  // consulta solo la edad, resultado: 8

Esta flexibilidad te permite gestionar cambios específicos en los atributos sin afectar el resto de la estructura.

¿Cómo mostrar struct completos o sus atributos?

Para visualizar tus estructuras en consola, puedes utilizar fmt.Println, ya sea mostrando toda la estructura o destacando ciertos campos:

fmt.Println(personaEjemplo)          // Muestra todos los campos
fmt.Println(personaEjemplo.nombre)   // Muestra solo el nombre

Este enfoque facilita la inspección rápida y eficaz de tus datos.

Esperamos que estos consejos te ayuden a implementar eficazmente estructuras en Go. ¿Te gustaría intentar esto con otro tipo de struct o necesitas aclarar algo más al respecto? Escríbenos tus dudas en los comentarios.