Junior — Middle
Chová se funkce select v Go předvídatelně nebo náhodně?
sobes.tech AI
Odpověď od AI
Chování funkce select v Go je částečně předvídatelné, ale v případě, že je více kanálů připraveno současně, výběr kanálu je náhodný (náhodný). To je provedeno, aby se zabránilo zablokování a zajistilo spravedlivé rozdělení.
Pokud je připraven pouze jeden kanál, select ho vybere. Pokud žádný kanál není připraven a není zde default, select se zablokuje.
Příklad:
select {
case msg1 := <-chan1:
fmt.Println("Přijato z kanálu 1", msg1)
case msg2 := <-chan2:
fmt.Println("Přijato z kanálu 2", msg2)
default:
fmt.Println("Žádný kanál není připraven")
}
Pokud jsou oba kanály připraveny, výběr mezi nimi je náhodný.