Go · Intermediário · Inglês · Técnico
closure
Função anônima que captura variáveis do escopo onde foi criada e continua acessando-as mesmo depois que esse escopo terminou.
Onde usar
Usadas em callbacks, goroutines e geradores, como 'func counter() func() int'. No review atenta-se ao que a closure captura, porque a variável é compartilhada, não copiada.
Em código
func counter() func() int {
n := 0
return func() int { n++; return n }
}
c := counter()
fmt.Println(c(), c(), c())Exemplos
The closure captures the counter, not a copy of it.
A closure captura o contador, não uma cópia dele.
Return a closure to keep the state private.
Retorne uma closure para manter o estado privado.
Cuidado
A captura é da variável, não de uma cópia do valor: se a variável mudar depois, a closure enxerga a mudança.
Sinônimos
função anônima com captura, fechamento
Origem
Do inglês closure, 'fechamento': a função fecha sobre as variáveis do contexto.