Sobes.tech
Middle

Čo je to uzáver v Go?

sobes.tech AI

Odpoveď od AI

Zatváranie v Go je funkcia, ktorá "si pamätá" hodnoty z okolia, aj po tom, čo vonkajšia funkcia skončila. To umožňuje zachytiť premenné zvonku a použiť ich vo vnútri.

// Vonkajšia funkcia
func makeCounter() func() int {
    count := 0 // Premenná, ktorá bude zachytená

    // Vnútorná funkcia (zatváranie)
    return func() int {
        count++ // Zachytíme a zmeníme count
        return count
    }
}

// Príklad použitia
func main() {
    counter1 := makeCounter() // Vytvoríme prvé zatváranie
    fmt.Println(counter1()) // Výstup: 1
    fmt.Println(counter1()) // Výstup: 2

    counter2 := makeCounter() // Vytvoríme druhé zatváranie (so svojím count)
    fmt.Println(counter2()) // Výstup: 1
}