Back to questions
Фабрика Решений
Mail.ru
Junior — Middle
95
Какова роль оператора defer в языке Go и в чем его преимущества?
Companies where asked
Twinby
Маском
Answer from AI
sobes.tech AI
Оператор defer в языке Go используется для отложенного выполнения функции до момента выхода из окружающей функции (обычно для освобождения ресурсов или выполнения завершающих действий).
Преимущества defer:
- Гарантирует выполнение кода в конце функции, даже если функция завершается с ошибкой или паникой.
- Улучшает читаемость кода, позволяя писать освобождение ресурсов рядом с их выделением.
- Позволяет избежать дублирования кода очистки в разных местах функции.
Пример:
func readFile() error {
file, err := os.Open("file.txt")
if err != nil {
return err
}
defer file.Close() // файл закроется при выходе из функции
// работа с файлом
return nil
}
Здесь file.Close() будет вызван автоматически при выходе из readFile, независимо от того, как именно функция завершится.