Что будет, если запустить горутину и в ней вызвать panic?

Если в горутине вызвать panic, то эта паника будет локальной для этой горутины и приведёт к её аварийному завершению, если не будет обработана (recover).

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

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

Если в горутине вызвать panic, то эта паника будет локальной для этой горутины и приведёт к её аварийному завершению, если не будет обработана (recover).

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

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

Если в горутине вызвать panic, то эта паника будет локальной для этой горутины и приведёт к её аварийному завершению, если не будет обработана (recover).

Важно:

  • Паника в одной горутине не остановит другие горутины и не завершит всю программу, если она не произойдет в главной горутине.
  • Чтобы избежать краха всей программы, нужно использовать defer с recover внутри горутины для перехвата паники.

Пример:

go func() {
    defer func() {
        if r := recover(); r != nil {
            fmt.Println("Паника перехвачена в горутине:", r)
        }
    }()
    panic("что-то пошло не так")
}()

Без recover паника завершит выполнение этой горутины, но остальные продолжат работу.

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

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

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

Подробнее