Назад к вопросам
Middle
116
questionbank
Что такое замыкание в Go?
Sobes Copilot
Получайте ответы в реальном времени
Ответ от нейросети
sobes.tech 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
}