Sobes.tech
Junior — Middle

Le comportement de la fonction select en Go est-il prévisible ou aléatoire?

sobes.tech IA

Réponse de l'IA

Le comportement de la fonction select en Go est partiellement prévisible, mais dans le cas où plusieurs canaux sont prêts en même temps, la sélection du canal se fait de manière aléatoire (au hasard). Cela est fait pour éviter les blocages et assurer une répartition équitable.

Si un seul canal est prêt, select le choisira. Si aucun canal n'est prêt et qu'il n'y a pas de default, select se bloque.

Exemple:

select {
case msg1 := <-chan1:
    fmt.Println("Reçu de chan1", msg1)
case msg2 := <-chan2:
    fmt.Println("Reçu de chan2", msg2)
default:
    fmt.Println("Aucun canal prêt")
}

Si les deux canaux sont prêts, le choix entre eux sera aléatoire.