Middle
Какво е затваряне в Go?
sobes.tech AI
Отговор от AI
Затваряне в Go е функция, която "помни" стойностите от околната среда, дори след като външната функция е приключила. Това позволява да се улавят външни променливи и да се използват вътре в нея.
// Външна функция
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
}