Sobes.tech
Junior — Middle

Pode explicar a sequência de execução das funções adiadas registadas no Go?

sobes.tech IA

Resposta da IA

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

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

Пример:

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

Вывод будет:

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

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