Skip to content

Instantly share code, notes, and snippets.

@llucasshenrique
Created March 1, 2024 03:57
Show Gist options
  • Save llucasshenrique/bde4f12e8832d956c14ca9d10c432c0f to your computer and use it in GitHub Desktop.
Save llucasshenrique/bde4f12e8832d956c14ca9d10c432c0f to your computer and use it in GitHub Desktop.
ponteiros em golang
module main
func main() {
dez := 10
// Reserva na memoria um endereço para a variavel com chave 'dez'
// e atribui 10 como valor
// Agora você pode acessar o valor de 'dez'
fmt.Println("dez", dez)
apontamentoParaDez := &dez
// Reserva na memoria um endereço para a variavel com chave 'apontamentoParaDez'
// e atribui o endereço da variavel 'dez' como valor
fmt.Println("apontamentoParaDez", apontamentoParaDez)
// & é um operador chamado de 'addressof', endereço de.
// Com isso você tem uma referencia para a um outro endereço memoria!
fmt.Println("*apontamentoParaDez", *apontamentoParaDez)
// * é o operador chamado de 'dereference', desreferência.
// Com ele você pode acessar o valor na memoria no endereço do apontamento.
// Você pode manipular o valor de uma referencia, desde que siga a tipagem da variavel original
*apontamentoParaDez = 20
fmt.Println("*apontamentoParaDez = 20", *apontamentoParaDez)
// Como você manipulou o valor da referencia a variavel original terá o valor atribuido
fmt.Println("dez", dez)
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment