Junior — Middle
Seçim əməliyyatında ilk nə həyata keçirilir: kanalın məlumatlarının işlənməsi yoxsa mövcud kontekstdən oxuma?
sobes.tech Süni İntellekt
AI-dan cavab
Go-da select əməliyyatında icra sırası kanalların və digər əməliyyatların hazır olmasına bağlıdır. Əgər bir vaxtda bir neçə hal hazırdırsa, təsadüfi biri seçilir.
Kanaldan məlumatların işlənməsi və kontekstdən (context) oxumaq arasında müqayisəyə gəldikdə:
- Əgər select-də kanal oxumaq və kontekstdən oxumaq üçün hallar (məsələn, <-ctx.Done()) mövcuddursa və hər ikisi hazırdırsa, seçim təsadüfi olacaq.
- Əgər yalnız biri hazırdırsa, o icra olunacaq.
Bu səbəbdən, hansı ilk icra olunacağını dəqiq söyləmək mümkün deyil — bu, select-in icra olunduğu zaman kanalların və kontekstin vəziyyətindən asılıdır.
Nümunə:
select {
case data := <-ch:
// kanal məlumatlarının işlənməsi
case <-ctx.Done():
// kontekstin ləğv olunmasının işlənməsi
}
Əgər həm ch, həm də ctx.Done() hazırdırsa, seçim təsadüfi olacaq.