yanpiing

Yan.ts

Posted on May 20, 2022

Ponteiros em GO

Introdução

A primeira e vez que ouvi falar em ponteiros foi quando eu estava aprendendo minha primeira linguagem de programação na faculdade C, e eu lembro que foi algo que conseguiu deixar minha mente totalmente bugada e eu levei semanas para entender. De lá para cá esqueci totalmente como funcionavam mas em 2022 estudando o GO ouvi novamente falar de ponteiros e seguindo o Today I Learned resolvi escrever sobre para não esquecer mais

Ponteiros

Quando fazemos uma atribuição de variável no GO por exemplo:

  x := 10
Enter fullscreen mode Exit fullscreen mode

na verdade ele está fazendo uma associação e salvando o valor 10 em um endereço de memoria e ele salva isso como sendo o x, se quisermos pegar esse endereço em que o GO armazenou o valor 10 podemos usar o &x para que o go mostre qual o endereço onde ele armazenou o 10

Go playground

com isso se declaramos uma nova variável por exemplo Y e atribuirmos a ela o valor de &x, significa que ela vai apontar para o mesmo endereço de memoria que X é diferente de qunando por exemplo falamos que z := x

Image description

perceba nos logs que o valor de Y é igual ao endereço de memoria de X mas o endereço de memoria de Y é diferente do de X, enquanto que no Z onde fizemos uma atribuição direta o endereço de memoria de Z é exatamente o mesmo que X

Outra coisa interessante que podemos fazer é, depois de atribuir a Y o endereço de X podemos modificar o valor que Y está apontando com o operador de *y então podemos fazer o seguinte!
Image description

Onde mudamos o valor de X usando apenas Y

E na vida real, quando vamos usar ponteiros?

Image description

sempre que queremos que uma função mude o valor de uma variável que já temos, nesse caso podemos ver q ambas as funções de soma, a somaSemPonteiro e a somaComPonteiro retornam o valor que receberam com 1 a mais, no exemplo é 11, porem só a soma com ponteiro reatribui o valor de x para 11 pois ela pega o local onde x está apontando e muda o valor que ele está apontando, onde antes era 10 passa a ser 11

💖 💪 🙅 🚩
yanpiing
Yan.ts

Posted on May 20, 2022

Join Our Newsletter. No Spam, Only the good stuff.

Sign up to receive the latest update from our blog.

Related

Cobra CLI no GO
go Cobra CLI no GO

May 24, 2022

Ponteiros em GO
go Ponteiros em GO

May 20, 2022