Зависит ли проблема захвата переменной цикла в замыкании горутины от версии Go?

Например, в Go можно создать функцию, которая возвращает другую функцию, использующую переменную из внешней функции:

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

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

В программировании термин «захват переменной» (variable capture) означает, что функция или замыкание сохраняет доступ к переменным из внешней области видимости, даже после того, как эта область уже завершила своё выполнение.

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

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

В программировании термин «захват переменной» (variable capture) означает, что функция или замыкание сохраняет доступ к переменным из внешней области видимости, даже после того, как эта область уже завершила своё выполнение.

Например, в Go можно создать функцию, которая возвращает другую функцию, использующую переменную из внешней функции:

func makeAdder(x int) func(int) int {
    return func(y int) int {
        return x + y // 'x' захвачена замыканием
    }
}

func main() {
    addFive := makeAdder(5)
    fmt.Println(addFive(3)) // Выведет 8
}

Здесь внутренняя функция «захватывает» переменную x из внешней функции makeAdder. Это позволяет сохранять состояние между вызовами и создавать более гибкие конструкции.

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

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

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

Подробнее