defer откладывает вызов функции до выхода из окружающей функции. Отложенные вызовы выполняются в обратном порядке регистрации, включая выход через panic.
Что делает defer?
defer откладывает вызов функции до выхода из окружающей функции. Отложенные вызовы выполняются в обратном порядке регистрации, включая выход через panic.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
defer откладывает вызов функции до выхода из окружающей функции. Отложенные вызовы выполняются в обратном порядке регистрации, включая выход через panic.
Аргументы отложенного вызова вычисляются в момент выполнения defer, а сама функция вызывается позже. Это удобно для Unlock и Close. В цикле defer не выполняется в конце каждой итерации, поэтому ресурсы могут накапливаться до выхода из функции. Отложенная функция может менять именованный возвращаемый результат; при аварийном завершении через os.Exit defer не выполняется.