Sobes.tech
Назад к вопросам
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:

  1. defer fmt.Println(1)
  2. defer fmt.Println(2)

При выходе из main они выполняются в обратном порядке:

  • Сначала fmt.Println(2)
  • Затем fmt.Println(1)

Поэтому на экран выводится:

2
1