ExpertiDict

Go · Intermediário · Inglês · Técnico

closure

/ˈkloʊʒɚ/substantivo

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.

Veja também

Todos os termos de Go