Back to questions
Middle+
6
В каком порядке оператор select читает из нескольких каналов?
Companies where asked
ТБанк
Answer from AI
sobes.tech AI
В Go оператор select выбирает случайный готовый (ready) канал, если таких несколько. Если ни один канал не готов, select блокируется (если нет default).
Порядок чтения из нескольких каналов не фиксирован и не гарантируется. Это сделано для предотвращения блокировок и обеспечения справедливого распределения.
Пример:
select {
case msg1 := <-chan1:
fmt.Println("Получено из chan1:", msg1)
case msg2 := <-chan2:
fmt.Println("Получено из chan2:", msg2)
default:
fmt.Println("Нет готовых каналов")
}
Если оба chan1 и chan2 готовы, Go случайно выберет один из них.