Sobes.tech
Назад к вопросам
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

Это полезно, например, для освобождения ресурсов в обратном порядке их захвата.