Назад к вопросам
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
}