Назад к вопросам
Senior
7
// Вопрос 2. Что выведет на экран package main import "fmt" func main() { { defer fmt.Println(1) } defer fmt.Println(2) }
Компании, где спрашивали
МВидео/эльдорадо
Ответ от нейросети
sobes.tech AI
Программа выведет:
2
1
Объяснение:
В Go вызовы defer откладываются до выхода из функции и выполняются в обратном порядке — стек вызовов.
В данном коде:
{
defer fmt.Println(1)
}
defer fmt.Println(2)
Первый defer находится внутри блока, но блок не является отдельной функцией, поэтому defer регистрируется и будет выполнен при выходе из main.
Порядок регистрации defer:
defer fmt.Println(1)defer fmt.Println(2)
При выходе из main они выполняются в обратном порядке:
- Сначала
fmt.Println(2) - Затем
fmt.Println(1)
Поэтому на экран выводится:
2
1