tous les goroutines sont endormis - blocage

Pour l'un de mes exigence-je créer un nombre N de travailleur à aller routines, qui seront suivis par une surveillance de routine. la surveillance de routine a la fin, lorsque tous les travailleurs routines complète. Mon code se terminant en impasse, s'il vous plaît aider.

import "fmt"
import "sync"
import "strconv"

func worker(wg *sync.WaitGroup, cs chan string, i int ){
    defer wg.Done()
    cs<-"worker"+strconv.Itoa(i)    
}

func monitorWorker(wg *sync.WaitGroup, cs chan string) {
    defer wg.Done()
    for i:= range cs {
            fmt.Println(i)
     }
}
func main() {
    wg := &sync.WaitGroup{}
    cs := make(chan string)

    for i:=0;i<10;i++{
             wg.Add(1)
             go worker(wg,cs,i)
    } 

    wg.Add(1)
    go monitorWorker(wg,cs)
    wg.Wait()
}

OriginalL'auteur vrbilgi | 2013-11-10