Junior — Middle
Կարող եք բացատրել Go-ում գրանցված հետաձգված ֆունկցիաների կատարման հաջորդականությունը:
sobes.tech AI
Պատասխան AI-ից
В Go отложенные функции (defer) выполняются в порядке, обратном их регистрации — то есть по принципу стека (LIFO).
Когда функция завершается, все отложенные вызовы выполняются в обратном порядке: последний зарегистрированный defer выполняется первым.
Пример:
func example() {
defer fmt.Println("Первый defer")
defer fmt.Println("Второй defer")
defer fmt.Println("Третий defer")
fmt.Println("В теле функции")
}
Вывод будет:
В теле функции
Третий defer
Второй defer
Первый defer
Это полезно, например, для освобождения ресурсов в обратном порядке их захвата.