Middle
O que é um closure em Go?
sobes.tech IA
Resposta da IA
O encerramento em Go é uma função que "lembra" os valores do seu ambiente circundante, mesmo após a função exterior ter terminado. Isso permite capturar variáveis externas e usá-las dentro dela.
// Função exterior
func makeCounter() func() int {
count := 0 // Variável que será capturada
// Função interna (encerramento)
return func() int {
count++ // Captura e modifica count
return count
}
}
// Exemplo de uso
func main() {
counter1 := makeCounter() // Cria o primeiro encerramento
fmt.Println(counter1()) // Saída: 1
fmt.Println(counter1()) // Saída: 2
counter2 := makeCounter() // Cria um segundo encerramento (com seu próprio count)
fmt.Println(counter2()) // Saída: 1
}