2

Explicación de Punteros en GO

Te explicaré de una manera fácil y detallada cómo funcionan los punteros en GO. Tengamos en cuenta el siguiente fragmento de código y te lo explicaré línea a línea que debe suceder:

packagemainimport "fmt"

funcmain() {
  x := 25 // Línea 1
  y := &x // Línea 2
  fmt.Println("Línea 3:", x) 
  fmt.Println("Línea 4:", &x) 
  fmt.Println("Línea 5:", y)
  fmt.Println("Línea 6:", *y)
  fmt.Println("Línea 7:", &y) 
}

Línea 1: Aqui lo que sucede es que en memoria RAM se va reservar un lugar en la memoria que tendrá 2 cosas: una dirección de memoria (la que obtenemos con &) y un valor, que es 25
Línea 2: Aqui lo que decimos es que habrá un lugar en la memoria que también tendrá 2 cosas: su propia dirección de memoria y un valor, que será la dirección de memoria de x
Línea 3: Imprimirá 25
Línea 4: Imprimirá la dirección de memoria donde se guarda x
Línea 5: Imprimirá el valor de y, que a su vez es la dirección de memoria de x, lo mismo de la línea de arriba
Línea 6: Cuando tenemos una variable que guarda una dirección de memoria (su valor es una dirección de memoria), con el operador * accedemos a ese valor, aqui imprime 25 el valor de x
Línea 7: También es importante notar que asi sea que y guarde como valor una dirección de memoria, y tiene su propia dirección de memoria donde reside, distinto a la dirección de memoria que tiene como valor

Ahora verás el resultado en una consola de lo que imprimió:

Captura de pantalla de 2020-06-15 20-47-14.png

Como puedes ver, las líneas 4 y 5 hacen referencia a la misma dirección en memoria, mientras que la línea 7 tiene una totalmente distinta.

Escribe tu comentario
+ 2
1
36Puntos

Excelente aporte! me sirvio muchisimo! GRACIAS 😃