Middle+
U kom redosledu operator select čita iz više kanala?
sobes.tech АИ
Одговор од АИ
У 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 ће насумично изабрати један од њих.