Ответ
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-операций и обработки ошибок
Видео-ответы
▶
▶
▶