Sobes.tech
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.