Junior — Middle
Šta se prvo izvršava u operatoru izbora: obrada podataka iz kanala ili čitanje iz trenutnog konteksta?
sobes.tech АИ
Одговор од АИ
U naredbi select u Go, redosled izvršavanja zavisi od spremnosti kanala i drugih operacija. Ako je više slučajeva istovremeno spremno, odabira se slučajni.
Što se tiče poređenja obrade podataka iz kanala i čitanja iz konteksta (context):
- Ako u selectu postoji slučaj za čitanje iz kanala i slučaj za čitanje iz konteksta (npr., <-ctx.Done()), i oba su spremna, izbor će biti slučajan.
- Ako je spreman samo jedan od njih, on će biti izvršen.
Stoga, ne može se sa sigurnošću reći šta će biti izvršeno prvo — to zavisi od stanja kanala i konteksta u trenutku izvršavanja select.
Primer:
select {
case data := <-ch:
// obrada podataka iz kanala
case <-ctx.Done():
// obrada otkazivanja konteksta
}
Ako su i ch i ctx.Done() spremni, izbor će biti slučajan.