A principal função de um ponteiro é apontar para um endereço de memoria, que no caso contém o valor de uma determinada variável.
Sintaxe:
nome_ponteiro *tipo_variavel
Onde:
- nome_ponteiro - Nome do ponteiro
- *tipo_variavel - Tipo do ponteiro.
O operador & gerar um ponteiro para seu operando
Sintaxe:
variavel := valor
ponteiro = &variavel
Onde:
- variavel - variavel(nesse caso operando) para qual o ponteiro apontará o local da memoria.
- valor - Valor a ser alocado na memória.
- ponteiro - Nome do ponteiro a ser utilizado
- &variavel - Nesse trecho é feito a referência de memoria da variavel ao ponteiro através do &.
Exemplo 1:
package main
import "fmt"
func main() {
nome := "Julho"
ponteiro := &nome
fmt.Printf("Menu nome é %s",*ponteiro)
}
Caso você queira desrreferência um ponteiro basta setar o valor no mesmo através da sintaxe abaixo:
Sintaxe:
*ponteiro = valor
Onde:
ponteiro - Nome do ponteiro que será desrreferênciado.
valor - Novo valor do ponteiro.
Exemplo 2:
package main
import "fmt"
func main() {
nome := "Julho"
ponteiro := &nome
fmt.Printf("Menu nome é %s",*ponteiro)
*ponteiro="Maria"
fmt.Printf("Menu nome é %s",*ponteiro)
}
Ai vem a dúvida por que usar um ponteiro ?
A resposta é simples você deseja que usar a referencia de uma valor de uma determinada variavel e não o valor em si.