Sobes.tech
Middle

Was ist eine Closure in Go?

sobes.tech KI

Antwort von AI

Schließungen in Go sind Funktionen, die "sich erinnern" an Werte aus ihrem umgebenden Gültigkeitsbereich, auch nachdem die umgebende Funktion beendet wurde. Dies ermöglicht es, Variablen von außen zu erfassen und innerhalb der Funktion zu verwenden.

// Umgebende Funktion
func makeCounter() func() int {
    count := 0 // Variable, die erfasst wird

    // Innere Funktion (Schließung)
    return func() int {
        count++ // Erfasst und ändert count
        return count
    }
}

// Beispiel für die Verwendung
func main() {
    counter1 := makeCounter() // Erstes Schließung erstellen
    fmt.Println(counter1()) // Ausgabe: 1
    fmt.Println(counter1()) // Ausgabe: 2

    counter2 := makeCounter() // Zweites Schließung erstellen (mit eigenem count)
    fmt.Println(counter2()) // Ausgabe: 1
}