Оператор select в Go используется для управления несколькими операциями канала одновременно. Он позволяет goroutine ждать на нескольких каналах связи одновременно и выполнять код в зависимости от того, какой канал готов первым.
select {
case msg := <-ch:
fmt.Println(msg)
case <-time.After(time.Millisecond * 500):
fmt.Println("do something after a period amount of time")
default:
fmt.Println("No message received")
}
Оператор select проверяет каждый блок case и выполняет первый, который готов:
ch. Если данные приходят, значение сохраняется в msg и выполняется связанный блок кодаselectdefault case необязателен и полезен для неблокирующего поведенияtime.After() часто используются с select для управления дедлайнамиКогда несколько case в select готовы одновременно, Go всегда выполнит первый case в порядке его появления в коде.
Новый — ещё не проверен сообществом
Вы