Sobes.tech
Junior — Middle

Môžete vysvetliť sekvenciu vykonávania odložených funkcií zaregistrovaných v Go?

sobes.tech AI

Odpoveď od AI

В Go отложенные функции (defer) выполняются в порядке, обратном их регистрации — то есть по принципу стека (LIFO).

Когда функция завершается, все отложенные вызовы выполняются в обратном порядке: последний зарегистрированный defer выполняется первым.

Пример:

func example() {
    defer fmt.Println("Первый defer")
    defer fmt.Println("Второй defer")
    defer fmt.Println("Третий defer")
    fmt.Println("В теле функции")
}

Вывод будет:

В теле функции
Третий defer
Второй defer
Первый defer

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