DEV Community

Yan.ts
Yan.ts

Posted on

5 3

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

Qodo Takeover

Introducing Qodo Gen 1.0: Transform Your Workflow with Agentic AI

While many AI coding tools operate as simple command-response systems, Qodo Gen 1.0 represents the next generation: autonomous, multi-step problem-solving agents that work alongside you.

Read full post

Top comments (0)

Billboard image

The Next Generation Developer Platform

Coherence is the first Platform-as-a-Service you can control. Unlike "black-box" platforms that are opinionated about the infra you can deploy, Coherence is powered by CNC, the open-source IaC framework, which offers limitless customization.

Learn more

👋 Kindness is contagious

Please leave a ❤️ or a friendly comment on this post if you found it helpful!

Okay