Junior — Middle
Čo sa vykoná ako prvé v operátore výberu: spracovanie údajov z kanála alebo čítanie z aktuálneho kontextu?
sobes.tech AI
Odpoveď od AI
V príkaze select v jazyku Go závisí poradie vykonávania od pripravenosti kanálov a iných operácií. Ak je viacero prípadov pripravených súčasne, vyberie sa náhodný.
Čo sa týka porovnania spracovania dát z kanála a čítania z kontextu (context):
- Ak v selecte existuje prípad na čítanie z kanála a iný na čítanie z kontextu (napríklad, <-ctx.Done()), a obe sú pripravené, voľba bude náhodná.
- Ak je pripravený len jeden z nich, vykoná sa práve on.
Preto nie je možné jednoznačne povedať, čo bude vykonané ako prvé — záleží na stave kanálov a kontextu v okamihu vykonávania selectu.
Príklad:
select {
case data := <-ch:
// spracovanie dát z kanála
case <-ctx.Done():
// spracovanie zrušenia kontextu
}
Ak sú pripravené aj ch, aj ctx.Done(), voľba bude náhodná.