Senior
// 2. kérdés. Mit fog kiírni a képernyőre package main import "fmt" func main() { { defer fmt.Println(1) } defer fmt.Println(2) }
sobes.tech MI
Válasz az MI-től
Программа выведет:
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