Défi
Énoncé
Créer un channel non bufferisé ch := make(chan int). Lancer 3 goroutines avec go func(id int) { ch <- id }(i) pour i valant 1, 2 et 3. Dans main, recevoir exactement 3 valeurs depuis ch dans une boucle for et les afficher avec fmt.Println. Comme les goroutines s'exécutent de façon concurrente, l'ordre des valeurs reçues n'est pas garanti et peut varier d'une exécution à l'autre.
Contraintes
- Compilé avec
go build(Go 1.21+). - Utiliser un channel non bufferisé (
make(chan int)sans second argument). - Aucun
sync.WaitGroupnitime.Sleep: la synchronisation repose uniquement sur le channel. - Exactement 3 réceptions dans
main: pas declose(ch)ni derange. - Packages autorisés :
fmtuniquement.
Exemple
Exécution possible (l'ordre peut varier) :
2
1
3
Autre exécution possible :
1
3
2
Les trois identifiants 1, 2 et 3 sont toujours présents, dans un ordre indéterminé.