Created
March 1, 2024 03:57
-
-
Save llucasshenrique/bde4f12e8832d956c14ca9d10c432c0f to your computer and use it in GitHub Desktop.
ponteiros em golang
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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