// Вопрос 2. Что выведет на экран

Программа выведет:

Короткий ответ

Что ответить на собеседовании

Программа выведет:

Подробный разбор

Ответ с пояснениями

Условие

// Вопрос 2. Что выведет на экран

package main

import "fmt"

func main() { { defer fmt.Println(1) } defer fmt.Println(2) }

Ответ

Программа выведет:

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

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее