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
}