Junior — Middle
Come funziona il meccanismo di esecuzione differita dei comandi con Defer?
sobes.tech AI
Risposta dell'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() // файл закроется при выходе из функции
// работа с файлом
}