Aqui estão algumas das situações comuns em que você precisará usar um ponteiro em vez de um valor:
Alterar o estado de um objeto: Digamos que você tenha uma estrutura como esta
type Person struct {
name string
age int
gender string
}
Agora, você quer um método permita alterar o nome de uma pessoa: Para isso, um ponteiro é necessário, pois ele da acesso à instância original, não a uma cópia dela:
func (p *Person) changeName(name string){
p.name = name
}