Какой вывод получит консоль в примере №38

Программа сначала вызовет печать hello, затем при раскрутке panic выполнит defer и напечатает world. После этого необработанная panic завершит программу с диагностикой error.

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

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

Программа сначала вызовет печать hello, затем при раскрутке panic выполнит defer и напечатает world. После этого необработанная panic завершит программу с диагностикой error.

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

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

Условие

Какой текст будет выведен после запуска следующей программы

import "fmt"

func main() {
    defer fmt.Println("world")
    fmt.Println("hello")
    panic("error")        
}

Ответ

Программа сначала вызовет печать hello, затем при раскрутке panic выполнит defer и напечатает world. После этого необработанная panic завершит программу с диагностикой error.

Defer исполняется при выходе из функции, в том числе из-за panic. Он не подавляет ошибку сам по себе: для этого нужен recover в подходящей отложенной функции. Диагностика runtime обычно идёт в stderr, обычные строки — в stdout, поэтому их визуальное объединение внешним сборщиком может отличаться от порядка вызовов.

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

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

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

Подробнее