Junior — Middle
Explique o mecanismo de funcionamento do closure na programação.
sobes.tech IA
Resposta da IA
Em programação, um encerramento (closure) é uma função que "lembra" e pode usar variáveis do seu escopo externo, mesmo que essa função externa já tenha terminado a execução.
Em Go, os encerramentos são frequentemente criados usando funções anônimas que acessam variáveis do contexto circundante. Isso permite manter o estado entre chamadas de função.
Exemplo:
package main
import "fmt"
func contador() func() int {
count := 0
return func() int {
count++
return count
}
}
func main() {
c := contador()
fmt.Println(c()) // 1
fmt.Println(c()) // 2
fmt.Println(c()) // 3
}
Aqui, a função contador retorna um encerramento que incrementa e retorna o valor de count. A variável count é mantida no encerramento entre as chamadas.