🥇 Uso de punteros en estructuras

🍿 Copia vs referencia dentro de estructuras

Es importante hacer notar que cuando se realiza una copia de una estructura a través de una igualdad, se realiza una copia completa de los valores de esta. Es decir.

🍿 Ejemplo de asignación por copia de una estructura en Go

package main

import "fmt"

type Pais struct {
    Nombre string
}

func main() {
    pais1 := Pais{Nombre: "Canada"}
    pais2 := pais1
    pais1.Nombre = "Inglaterra"
    fmt.Printf("%+v\n", pais1)
    fmt.Printf("%+v\n", pais2)
}

🍿 Descripción del ejemplo de asignación por copia de una estructura en Go

En la salida tendremos.

{Nombre:Inglaterra}
{Nombre:Canada}

🍿 Ejemplo de asignación por referencia de una estructura en Go

Actualicemos ahora el script, utilizando un puntero.

package main

import "fmt"

type Pais struct {
    Nombre string
}

func main() {
    pais1 := Pais{Nombre: "Canada"}
    pais2 := &pais1
    pais1.Nombre = "Inglaterra"
    fmt.Printf("%+v\n", pais1)
    fmt.Printf("%+v\n", *pais2)
}

🍿 Descripción del ejemplo de asignación por referencia de una estructura en Go

El resultado sera.

{Nombre:Inglaterra}
{Nombre:Inglaterra}

Como vemos si modificamos pais1 este también tendrá efecto en pais2, debido a que usamos la dirección de la memoria.

Para ello…

Campos públicos y privados Métodos
comments powered by Disqus