Выбор ответа Junior Горутины и планировщик GMP спрашивают часто обновлено

main не ждёт горутины

Вопрос

Что, скорее всего, выведет программа?

func main() {
    go fmt.Println("hello")
}

Попробуйте сами

Выберите вариант, и откроется разбор.

Показать ответ и разбор

Коротко

Правильный ответ: Скорее ничего: main выйдет раньше горутины. Когда функция main возвращается, программа завершается, не дожидаясь остальных горутин.

Варианты ответа

  1. Скорее ничего: main выйдет раньше горутиныправильный ответ
  2. hello, потому что рантайм ждёт все горутины перед выходом
  3. Ошибку компиляции: результат go-вызова не используется
  4. panic: goroutine leaked при завершении main

Разбор

Когда функция main возвращается, программа завершается, не дожидаясь остальных горутин. Горутина почти наверняка не успеет выполниться. Ждать нужно явно: WaitGroup, канал. Утечка горутин не вызывает панику, а код корректен.

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.