Как работает оператор select?

Middle
1.3k просмотров
AFK Offer AI

select позволяет горутине ожидать несколько операций с каналами одновременно. Он блокируется, пока один из case не станет готов к выполнению. Если готовы несколько — выбирается случайный.

select {
case msg := <-ch1:
    fmt.Println(msg)
case ch2 <- 42:
    fmt.Println("sent")
case <-time.After(5 * time.Second):
    fmt.Println("timeout")
}

Часто используется для таймаутов, отмены через context.Done() и мультиплексирования каналов. Без default блокирует горутину до готовности одного из case.

Следующий вопрос

Как работает type assertion?