Comment écouter N canaux en Go : select dynamique pour un nombre arbitraire de canaux ?
Bonjour à tous ! J'étudie Go et j'ai rencontré un problème. J'écris un utilitaire qui traite des événements provenant de plusieurs sources de données. Chaque source fonctionne dans sa propre goroutine et envoie des données dans son canal. Le nombre de sources est inconnu à l'avance et peut changer pendant l'exécution du programme (l'utilisateur peut ajouter/supprimer des sources).\n\nEn Go, il existe la construction `select` qui permet d'écouter plusieurs canaux simultanément. Mais elle est statique — il faut spécifier à l'avance tous les `case` :\n\n```go\nselect {\ncase msg1 := <-ch1:\n // traitement\ncase msg2 := <-ch2:\n // traitement\ncase msg3 := <-ch3:\n // traitement\n}\n```\n\nMais que faire si j'ai une slice de canaux `[]chan int` et que leur nombre peut être 5, 10 ou 100 ? Comment écrire un `select` dynamique qui fonctionne avec un nombre arbitraire de canaux ?