Ένα closure είναι μια συνάρτηση που αναφέρεται σε μεταβλητές από το περιβάλλον εμβέλειάς της, «κλείνοντας» πάνω τους — η συνάρτηση διατηρεί πρόσβαση σε αυτές τις μεταβλητές ακόμα και μετά την επιστροφή της συνάρτησης που τα περιέχει. Οι συναρτήσεις στη Go είναι first-class values, καθιστώντας τα closures ένα κοινό και ισχυρό εργαλείο.
Ένα βασικό closure
{
count :=
{
count++
count
}
}
counter := makeCounter()
fmt.Println(counter())
fmt.Println(counter())
other := makeCounter()
fmt.Println(other())
