Junior — Middle
Co se provádí jako první v příkazu výběru: zpracování dat z kanálu nebo čtení z aktuálního kontextu?
sobes.tech AI
Odpověď od AI
V příkazu select v jazyce Go závisí pořadí provádění od připravenosti kanálů a dalších operací. Pokud jsou současně připraveny více případů, je vybrán náhodný z nich.
Pokud jde o srovnání zpracování dat z kanálu a čtení z kontextu (context):
- Pokud v selectu existuje případ pro čtení z kanálu a jiný pro čtení z kontextu (například <-ctx.Done()), a oba jsou připraveny, bude volba náhodná.
- Pokud je připraven pouze jeden z nich, provede se právě on.
Nelze tedy jednoznačně říct, co bude provedeno jako první — záleží na stavu kanálů a kontextu v okamžiku provádění selectu.
Příklad:
select {
case data := <-ch:
// zpracování dat z kanálu
case <-ctx.Done():
// zpracování zrušení kontextu
}
Pokud jsou jak ch, tak ctx.Done() připraveny, bude volba náhodná.