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
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
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
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?
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
Top comments (0)