Middle+
În ce ordine citește operatorul select din mai multe canale?
sobes.tech AI
Răspuns de la AI
În Go, operatorul select alege aleatoriu un canal gata (ready) dacă există mai multe. Dacă niciun canal nu este gata, select se blochează (dacă nu există default).
Ordinea de citire din mai multe canale nu este fixă și nu este garantată. Acest lucru se face pentru a preveni blocajele și a asigura o distribuție echitabilă.
Exemplu:
select {
case msg1 := <-chan1:
fmt.Println("Primite de la chan1:", msg1)
case msg2 := <-chan2:
fmt.Println("Primite de la chan2:", msg2)
default:
fmt.Println("Niciun canal gata")
}
Dacă ambele, chan1 și chan2, sunt gata, Go va alege aleatoriu unul dintre ele.