Ответ
Отложенные функции (defer) в Go вызываются в порядке LIFO (Last In, First Out) — последняя добавленная выполняется первой. Они выполняются перед возвратом из функции, даже при панике.
Пример:
func main() {
defer fmt.Println("First")
defer fmt.Println("Second")
defer fmt.Println("Third")
}
Вывод:
Third
Second
First
Важно:
- Аргументы отложенной функции вычисляются в момент вызова
defer, а не выполнения. - Порядок гарантирован только в пределах одной функции. Вложенные
deferработают аналогично.