package main import ( "fmt" "sync" ) func main() { var wg sync.WaitGroup out := make(chan int) wg.Add(2) go func() { defer wg.Done() for i := 1; i <= 5; i++ { out <- i } close(out) }() go func() { defer wg.Done() for v := range out{ fmt.Println(v) } }() wg.Wait() }