package main import ( "fmt" "sync" // "time" ) // func a(name int, channel chan int, wg *sync.WaitGroup) { // defer wg.Done() // for i := 0; i < 3; i++ { // fmt.Printf("Number %d is sending\n",name) // channel <- name // } // fmt.Printf("Num %d is ended\n",name) // } func test(name int,channel chan []int, wg *sync.WaitGroup) { defer wg.Done() inter := []int{} for i := 0; i < 3; i++ { inter = append(inter, name) } channel <- inter } func main() { var wg sync.WaitGroup _list := []int{1,2,3,4,5} a_chan := make(chan []int) for _,k := range _list { wg.Add(1) go test(k,a_chan, &wg) } go func() { wg.Wait() close(a_chan) }() // for i := range a_chan { // fmt.Println(i) // } for i := range a_chan { fmt.Println(i) } }