On peut éliminer la nécessiter de tester la réponse en fermant le channel. Cela donne :
packagemainfuncmain(){sayHello:=make(chaninterface{})sayWorld:=make(chaninterface{})quitter:=make(chanstring)gofunc(){fori:=0;i<4;i++{print("Hello ")sayWorld<-nil<-sayHello}close(sayWorld)}()gofunc(){for_=rangesayWorld{// We can range over chans.println("World!")sayHello<-nil}quitter<-"Done"}()println(<-quitter)}
Je ne vois pas comment simplifier encore en éliminant le channel quitter. Il n'y a pas à ma connaissance de primitive pour attendre la fermeture d'un channel. On pourrait utiliser les WaitGroups mais c'est un peu plus lourd conceptuellement que le channel quitter, cf http://play.golang.org/p/Iv5TC6Bgrk .
[^] # Re: Hello World concurrentiel
Posté par oao . En réponse à la dépêche De tout, de rien, des bookmarks, du bla‐bla #45. Évalué à 3.
On peut éliminer la nécessiter de tester la réponse en fermant le channel. Cela donne :
http://play.golang.org/p/sBtjttvPRJ
Je ne vois pas comment simplifier encore en éliminant le channel quitter. Il n'y a pas à ma connaissance de primitive pour attendre la fermeture d'un channel. On pourrait utiliser les WaitGroups mais c'est un peu plus lourd conceptuellement que le channel quitter, cf http://play.golang.org/p/Iv5TC6Bgrk .