Middle+
In welke volgorde leest de select-operator uit meerdere kanalen?
sobes.tech AI
Antwoord van AI
In Go kiest de select-operator willekeurig een klaar (ready) kanaal als er meerdere zijn. Als geen enkel kanaal klaar is, blokkeert select (als er geen default is).
De volgorde van lezen uit meerdere kanalen is niet vastgelegd en niet gegarandeerd. Dit is gedaan om blokkades te voorkomen en een eerlijke verdeling te garanderen.
Voorbeeld:
select {
case msg1 := <-chan1:
fmt.Println("Ontvangen uit chan1:", msg1)
case msg2 := <-chan2:
fmt.Println("Ontvangen uit chan2:", msg2)
default:
fmt.Println("Geen klaar kanalen")
}
Als zowel chan1 als chan2 klaar zijn, kiest Go willekeurig een van hen.