Uzávěra (closure) je funkce, která odkazuje na proměnné ze svého okolního rozsahu, "zavírá se kolem nich" — funkce si zachovává přístup k těmto proměnným i poté, co se vracející se funkce skončí. Funkce v Go jsou hodnoty prvního řádu, což činí uzávěry běžným a výkonným nástrojem.
Základní uzávěra
{
count :=
{
count++
count
}
}
counter := makeCounter()
fmt.Println(counter())
fmt.Println(counter())
other := makeCounter()
fmt.Println(other())
