Middle
Šta je zatvaranje u Go?
sobes.tech АИ
Одговор од АИ
Затвара у Го је функција која "сећа" вредности из окружења, чак и након што је спољашња функција завршена. Ово омогућава хватање променљивих изван и коришћење унутар.
// Спољашња функција
func makeCounter() func() int {
count := 0 // Променљива која ће бити ухваћена
// Унутрашња функција (затварање)
return func() int {
count++ // Хватање и измена count
return count
}
}
// Пример употребе
func main() {
counter1 := makeCounter() // Креирање првог затварања
fmt.Println(counter1()) // Излаз: 1
fmt.Println(counter1()) // Излаз: 2
counter2 := makeCounter() // Креирање другог затварања (са својим count)
fmt.Println(counter2()) // Излаз: 1
}