Sobes.tech
Middle

Co je to uzávěr v Go?

sobes.tech AI

Odpověď od AI

Zavírání v Go je funkce, která "pamatuje" hodnoty z okolního prostředí, i po ukončení vnější funkce. To umožňuje zachytit proměnné zvenčí a používat je uvnitř.

// Vnější funkce
func makeCounter() func() int {
    count := 0 // Proměnná, která bude zachycena

    // Vnitřní funkce (zavření)
    return func() int {
        count++ // Zachytíme a změníme count
        return count
    }
}

// Příklad použití
func main() {
    counter1 := makeCounter() // Vytvoříme první zavření
    fmt.Println(counter1()) // Výstup: 1
    fmt.Println(counter1()) // Výstup: 2

    counter2 := makeCounter() // Vytvoříme druhé zavření (se svým count)
    fmt.Println(counter2()) // Výstup: 1
}