Что такое замыкание в Go?

Замыкание в Go — это функция, которая "запоминает" значения из окружающей её области видимости, даже после того, как окружающая функция завершилась.

Короткий ответ

Что ответить на собеседовании

Замыкание в Go — это функция, которая "запоминает" значения из окружающей её области видимости, даже после того, как окружающая функция завершилась. Это позволяет захватывать переменные извне и использовать их внутри себя.

Подробный разбор

Ответ с пояснениями

Замыкание в 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
}

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее