Go · Avançado · Inglês · Técnico
method value
Expressão como obj.Method sem chamar o método: gera uma função já ligada àquele receiver. O receiver é avaliado e copiado na criação.
Onde usar
'f := srv.Handle' passa o método como callback, por exemplo para http.HandleFunc ou para uma goroutine. Com receiver de valor, a cópia acontece nesse momento e mudanças posteriores não aparecem.
Em código
type C struct{ n int }
func (c C) Show() { fmt.Println(c.n) }
c := C{1}
f := c.Show // c é copiado aqui
c.n = 2
f() // 1
g := C.Show // method expression
g(c) // 2Exemplos
Pass the method value as the callback.
Passe o method value como callback.
The method value copied the receiver when we created it.
O method value copiou o receiver quando o criamos.
Cuidado
Não confunda com method expression, T.Method, que gera uma função que recebe o receiver como primeiro argumento.
Sinônimos
método ligado
Antônimos
method expression