Go · Intermediário · Inglês · Técnico
pointer receiver
Receiver declarado como *T, que dá ao método acesso ao valor original em vez de uma cópia, permitindo alterá-lo e evitando copiar structs grandes.
Onde usar
Regra comum: se algum método precisa mutar o valor ou a struct é grande, use ponteiro em todos, para não misturar. Se há mutex na struct, o ponteiro é obrigatório.
Em código
type Acc struct{ total int }
func (a *Acc) Add(n int) { a.total += n }
var a Acc
a.Add(5) // vira (&a).Add(5)
fmt.Println(a.total)Exemplos
This method mutates the struct, so it needs a pointer receiver.
Esse método altera a struct, então precisa de um pointer receiver.
Don't mix pointer and value receivers on the same type.
Não misture pointer receivers e value receivers no mesmo tipo.
Cuidado
Misturar receivers de valor e de ponteiro no mesmo tipo é desencorajado: confunde o method set e quem lê o código.
Sinônimos
receiver de ponteiro
Antônimos
value receiver