Select блок без default case будет блокировать выполнение до тех пор, пока один из его вариантов не сможет выполниться. Это значит, что горутина будет ждать бесконечно, пока операция с каналом не станет доступной.
Когда оператор select не имеет default case, происходит следующее:
select завершаетсяБлок select с default case ведёт себя по-другому:
Без default case нет запасного варианта, поэтому блокировка гарантирована, если ни один канал не готов.
select {
case msg := <-channel1:
fmt.Println(msg)
case msg := <-channel2:
fmt.Println(msg)
}
// Блокируется здесь до тех пор, пока channel1 или channel2 не отправят данные
context)Блок select без default case будет блокироваться бесконечно, пока хотя бы один из его channel case не будет готов к выполнению.
Новый — ещё не проверен сообществом
Вы