Junior
142
questionbank
Какова цель использования конструкции defer в языке Go?
Answer from AI
sobes.tech AI
Конструкция defer используется для отложенного выполнения функции или метода. Запланированная функция будет выполнена непосредственно перед тем, как окружающая её функция вернёт управление.
Основные цели использования defer:
- Освобождение ресурсов: Гарантированное закрытие файлов, очистка сетевых соединений, освобождение блокировок мьютексов и других системных ресурсов, даже если в коде возникнет паника.
- Упрощение кода: Позволяет разместить код освобождения ресурса рядом с кодом его захвата, улучшая читаемость.
- Обработка паник: В комбинации с
recover,deferможно использовать для перехвата и обработки паник.
Пример освобождения файла:
// Пример отложенного закрытия файла
file, err := os.Open("example.txt")
if err != nil {
// обработка ошибки
return
}
defer file.Close() // Гарантированное закрытие файла при выходе из функции
// работа с файлом