Junior — Middle
Comportamentul funcției select în Go este previzibil sau aleatoriu?
sobes.tech AI
Răspuns de la AI
Comportamentul funcției select în Go este parțial previzibil, dar în cazul în care mai multe canale sunt gata în același timp, alegerea canalului se face aleatoriu (aleator). Acest lucru este făcut pentru a preveni blocajele și a asigura o distribuție echitabilă.
Dacă doar un canal este gata, select îl va alege pe acesta. Dacă niciun canal nu este gata și nu există un default, select se blochează.
Exemplu:
select {
case msg1 := <-chan1:
fmt.Println("Primire de la chan1", msg1)
case msg2 := <-chan2:
fmt.Println("Primire de la chan2", msg2)
default:
fmt.Println("Niciun canal gata")
}
Dacă ambele canale sunt gata, alegerea între ele va fi aleatorie.