Встречается на 25% собеседований по Go
Что такое Defer
Defer в Go — это ключевое слово, откладывающее выполнение функции до завершения окружающей функции. Оно гарантирует выполнение, даже если произойдет паника. Часто используется для освобождения ресурсов (закрытие файлов, разблокировка мьютексов и т.д.).
go
func readFile() {
file, err := os.Open("file.txt")
if err != nil {
log.Fatal(err)
}
defer file.Close() // Закроет файл при выходе из функции
// Работа с файлом
}Особенности:
- Вызовы
deferвыполняются в порядке LIFO (последний добавленный — первый выполненный) - Аргументы функции вычисляются в момент вызова
defer, а не выполнения - Удобен для cleanup-операций, но не подходит для критичных к производительности участков кода
Похожие вопросы
как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы
