Un closure es una función que referencia variables del ámbito que la rodea, "cerrando sobre" ellas — la función retiene acceso a esas variables incluso después de que la función envolvente retorna. Las funciones de Go son valores de primera clase, lo que hace que los closures sean una herramienta común y poderosa.
Un closure básico
{
count :=
{
count++
count
}
}
counter := makeCounter()
fmt.Println(counter())
fmt.Println(counter())
other := makeCounter()
fmt.Println(other())
