Sobes.tech
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.