🥇 Estructuras anidadas.

🍿 En que consisten las estructuras anidadas?

En algunas ocasiones, requerimos utilizar estructuras dentro de estructuras. Esto suele ser muy util como una forma de organizar estructuras de datos de forma mas eficiente. Continuando con el ejemplo anterior, supongamos que la capital no es solo un string, sino una estructura tipo ciudad con sus propios campos.

🍿 Ejemplo de estructuras anidadas en Go.

type Ciudad struct {
    Nombre    string
    Poblacion int
}

type Pais struct {
    Nombre    string
    Capital   Ciudad
    Idioma    string
    Poblacion int
}

🍿 Descripción del ejemplo de las estructuras anidadas.

Como podemos ver, ahora tenemos dos estructuras, para anidar una estructura dentro de otra, primero creamos las dependencias y enseguida las que las anidan.

ciudadDeMexico := Ciudad{
    Nombre:    "Ciudad de Mexico",
    Poblacion: 20e6,
}
mexico := Pais{
    Nombre:    "México",
    Capital:   ciudadDeMexico,
    Idioma:    "Español",
    Poblacion: 120e6,
}

🍿 Sintaxis de estructuras anidadas en un solo bloque.

También es posible realizar la definición en un solo bloque, esto nos ahorra el uso de la variable de la ciudad pero tan sencillo de leer como el ejemplo anterior.

mexico := Pais{
    Nombre:    "México",
    Capital:   Ciudad{
        Nombre:    "Ciudad de Mexico",
        Poblacion: 20e6,
    },
    Idioma:    "Español",
    Poblacion: 120e6,
}

El ejemplo completo se vería así.

package main

import "fmt"

type Ciudad struct {
    Nombre    string
    Poblacion int
}

type Pais struct {
    Nombre    string
    Capital   Ciudad
    Idioma    string
    Poblacion int
}

func main() {
    ciudadDeMexico := Ciudad{
        Nombre:    "Ciudad de Mexico",
        Poblacion: 20e6,
    }
    mexico := Pais{
        Nombre:    "México",
        Capital:   ciudadDeMexico,
        Idioma:    "Español",
        Poblacion: 120e6,
    }
    fmt.Printf("%+v\n", mexico)
}

Y la salida así.

{Nombre:México Capital:{Nombre:Ciudad de Mexico Poblacion:20000000} Idioma:Español Poblacion:120000000}
Uso del constructor en estructuras. Comparación de estructuras.
comments powered by Disqus