Зачем в Go нужен `defer` и как он работает?

В Go оператор defer используется для отложенного вызова функции — она будет выполнена после завершения окружающей функции, в которой объявлен defer.

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

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

В Go оператор defer используется для отложенного вызова функции — она будет выполнена после завершения окружающей функции, в которой объявлен defer.

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

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

В Go оператор defer используется для отложенного вызова функции — она будет выполнена после завершения окружающей функции, в которой объявлен defer.

Область видимости defer ограничена функцией, в которой он объявлен. Это значит, что отложенный вызов сработает только при выходе из текущей функции, даже если внутри есть несколько вложенных блоков.

Пример:

func example() {
    defer fmt.Println("Отложенный вызов")
    fmt.Println("Основной код")
}

// При вызове example() сначала выведется "Основной код", затем "Отложенный вызов".

Таким образом, defer удобно использовать для освобождения ресурсов, закрытия файлов, разблокировки мьютексов и других операций, которые должны выполниться в конце функции, независимо от того, как она завершится.

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

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

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

Подробнее