Выбор ответа Junior Горутины и планировщик GMP спрашивают часто обновлено
main не ждёт горутины
Вопрос
Что, скорее всего, выведет программа?
func main() {
go fmt.Println("hello")
}
Попробуйте сами
Выберите вариант, и откроется разбор.
Показать ответ и разбор
Коротко
Правильный ответ: Скорее ничего: main выйдет раньше горутины. Когда функция main возвращается, программа завершается, не дожидаясь остальных горутин.
Варианты ответа
- Скорее ничего: main выйдет раньше горутиныправильный ответ
hello, потому что рантайм ждёт все горутины перед выходом- Ошибку компиляции: результат go-вызова не используется
- panic: goroutine leaked при завершении main
Разбор
Когда функция main возвращается, программа завершается, не дожидаясь остальных горутин. Горутина почти наверняка не успеет выполниться. Ждать нужно явно: WaitGroup, канал. Утечка горутин не вызывает панику, а код корректен.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.