Junior — Middle
Qual é o papel do operador defer na linguagem Go e quais são as suas vantagens?
sobes.tech IA
Resposta da IA
Оператор 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, независимо от того, как именно функция завершится.