Sobes.tech
Middle

Wat is een closure in Go?

sobes.tech AI

Antwoord van AI

Closure in Go is een functie die de waarden uit de omringende scope "herinnert", zelfs nadat de buitenliggende functie is voltooid. Dit maakt het mogelijk om variabelen van buitenaf vast te leggen en binnenin te gebruiken.

// Buitenfunctie
func makeCounter() func() int {
    count := 0 // Variabele die wordt vastgelegd

    // Interne functie (closure)
    return func() int {
        count++ // Vastleggen en wijzigen van count
        return count
    }
}

// Voorbeeld van gebruik
func main() {
    counter1 := makeCounter() // Maak de eerste closure
    fmt.Println(counter1()) // Output: 1
    fmt.Println(counter1()) // Output: 2

    counter2 := makeCounter() // Maak een tweede closure (met eigen count)
    fmt.Println(counter2()) // Output: 1
}