Ответ
defer в Go используется для отложенного выполнения функции или метода до завершения текущей функции. Это удобно для освобождения ресурсов (закрытие файлов, разблокировка мьютексов) или выполнения завершающих действий (логирование, восстановление после паники).
Пример:
func readFile(filename string) error {
file, err := os.Open(filename)
if err != nil {
return err
}
defer file.Close() // Закроет файл при выходе из функции
// Работа с файлом...
return nil
}
Особенности:
- Вызовы
deferвыполняются в обратном порядке (LIFO) - Аргументы функции вычисляются в момент вызова
defer, а не выполнения - Полезен для cleanup-операций и обработки ошибок
Видео-ответы
▶
Собеседование Senior Go-разработчика / Даниил Подольский, Владимир Балун - Антон Зиновьев
▶
Собеседование на Golang 260к
▶
Mock-собеседование по Golang и PostgreSQL от Senior из Ozon
▶
Собеседование на middle Go-разработчика | Эйч Навыки
▶
Открытое собеседование на Go-разработчика | Навыки
▶
Mock собеседование по Go (Junior) от Team Lead из Ozon