Junior — Middle
Je správanie funkcie select v Go predvídateľné alebo náhodné?
sobes.tech AI
Odpoveď od AI
Správanie funkcie select v Go je čiastočne predvídateľné, ale v prípade, že je viacero kanálov pripravených súčasne, výber kanála je náhodný (náhodný). Toto je urobené na zabránenie blokov a zabezpečenie spravodlivého rozdelenia.
Ak je pripravený iba jeden kanál, select ho vyberie. Ak žiadny kanál nie je pripravený a nie je tam default, select sa zablokuje.
Príklad:
select {
case msg1 := <-chan1:
fmt.Println("Prijaté z kanála 1", msg1)
case msg2 := <-chan2:
fmt.Println("Prijaté z kanála 2", msg2)
default:
fmt.Println("Žiadny kanál nie je pripravený")
}
Ak sú oba kanály pripravené, výber medzi nimi bude náhodný.