Valor vs Referencia (Copia vs Puntero)

¿Cuántas formas de enviar una variable a una función existen en Go?

Existen dos formas de enviar una variable a una función.

  • Enviar una copia de su valor.
  • Enviar un puntero de esta (su dirección en la memoria).

Ejemplo de paso de argumentos por copia en Go

func equivalenciaEnPies(altura float32) float32 {
    altura = altura * 3.28
    return altura
}

var altura float32 = 1.70

fmt.Println("La altura es:", altura, "mts")
fmt.Println("La altura es:", equivalenciaEnPies(altura), " pies")
fmt.Println("La nueva altura es:", altura, "mts")
La altura es: 1.7 mts
La altura es: 5.576  pies
La nueva altura es: 1.7 mts

En este caso la función ha convertido una altura de metros a pies, la intención de este proceso es solo obtener la equivalencia de la altura en pies, el valor original de altura no es modificado.

Ejemplo de paso de argumentos por referencia en Go

func conversionEnPies(altura *float32) float32 {
    *altura = *altura - 0.10
    return *altura
}

var altura float32 = 1.70

fmt.Println("La altura es:", altura, "mts")
fmt.Println("Al envejecer:", conversionEnPies(&altura), "mts")
fmt.Println("Despues de envejecer:", altura, "mts")
La altura es: 1.7 mts
Al envejecer: -1.5799999 mts
Despues de envejecer: -1.5799999 mts

En este caso la función a convertido una altura de metros a pies, la intención de este proceso es obtener la equivalencia de la altura en pies y modificar el valor de la variable original.

VPN

  • Ir a la oferta de NordVPN

Moda

Accesorios