Назад к вопросам
Купер
Junior — Middle
77
Можете объяснить последовательность выполнения отложенных функций, зарегистрированных в Go?
Компании, где спрашивали
Ответ от нейросети
sobes.tech AI
В Go отложенные функции (defer) выполняются в порядке, обратном их регистрации — то есть по принципу стека (LIFO).
Когда функция завершается, все отложенные вызовы выполняются в обратном порядке: последний зарегистрированный defer выполняется первым.
Пример:
func example() {
defer fmt.Println("Первый defer")
defer fmt.Println("Второй defer")
defer fmt.Println("Третий defer")
fmt.Println("В теле функции")
}
Вывод будет:
В теле функции
Третий defer
Второй defer
Первый defer
Это полезно, например, для освобождения ресурсов в обратном порядке их захвата.