Что такое замыкание

«Что такое замыкание» — вопрос из категории Golang, который задают на 28% собеседований Golang Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

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

Пример:

func adder() func(int) int {
    sum := 0
    return func(x int) int {
        sum += x
        return sum
    }
}

func main() {
    a := adder()
    fmt.Println(a(1)) // 1
    fmt.Println(a(2)) // 3
    fmt.Println(a(3)) // 6
}

Здесь adder возвращает замыкание, которое сохраняет доступ к переменной sum между вызовами. Каждый вызов a() модифицирует одно и то же состояние sum.

Видео-ответы