Назад к вопросам
Самокат
Junior — Middle
75
Как работает механизм отложенного выполнения команд с использованием Defer?
Компании, где спрашивали
Ответ от нейросети
sobes.tech AI
В Go ключевое слово defer используется для отложенного выполнения функции до момента выхода из окружающей функции (например, перед возвратом из функции). Это позволяет гарантировать выполнение определённых действий, например, освобождение ресурсов или закрытие файлов, независимо от того, как функция завершится.
Механизм работает так: когда вызывается defer, функция и её аргументы вычисляются сразу, но сама функция будет вызвана только после завершения текущей функции, в обратном порядке вызова (стек вызовов defer).
Пример:
func example() {
defer fmt.Println("Мир")
fmt.Println("Привет")
}
// При вызове example() сначала выведется "Привет", затем "Мир" после выхода из функции.
Это удобно для управления ресурсами, например:
func readFile() {
file, err := os.Open("file.txt")
if err != nil {
log.Fatal(err)
}
defer file.Close() // файл закроется при выходе из функции
// работа с файлом
}