Senior
// Въпрос 2. Какво ще се покаже на екрана package main import "fmt" func main() { { defer fmt.Println(1) } defer fmt.Println(2) }
sobes.tech AI
Отговор от 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