Sulkeumafunktio (closure) on funktio, joka viittaa muuttujiin ympäröivästä laajuudestaan (scope), "sulkien ne sisäänsä" — funktio säilyttää pääsyn näihin muuttujiin jopa sen jälkeen, kun ympäröivä funktio palaa. Go-funktiot ovat ensimmäisen luokan arvoja, mikä tekee sulkeumafunktioista yleisiä ja tehokkaita työkaluja.
Perusesimerkki sulkeumafunktiosta
{
count :=
{
count++
count
}
}
counter := makeCounter()
fmt.Println(counter())
fmt.Println(counter())
other := makeCounter()
fmt.Println(other())
