Middle+
V akom poradí číta operátor select z viacerých kanálov?
sobes.tech AI
Odpoveď od AI
V Go operátor select náhodne vyberie jeden z pripravených (ready) kanálov, ak ich je viac. Ak žiadny kanál nie je pripravený, select sa zablokuje (ak nie je default).
Poradie čítania z viacerých kanálov nie je pevne stanovené a nie je garantované. Toto je urobené na zabránenie zablokovaniu a zabezpečenie spravodlivého rozdelenia.
Príklad:
select {
case msg1 := <-chan1:
fmt.Println("Prijaté z chan1:", msg1)
case msg2 := <-chan2:
fmt.Println("Prijaté z chan2:", msg2)
default:
fmt.Println("Žiadne pripravené kanály")
}
Ak sú oba, chan1 a chan2, pripravené, Go náhodne vyberie jeden z nich.