package api import ( "fmt" "sync" "time" "github.com/gin-gonic/gin" ) func Printr(c *gin.Context, apictx *ApiSession) (interface{}, error) { c1 := make(chan int) var wg sync.WaitGroup for i := 0; i < 3; i++ { wg.Add(1) go work(&wg, c1, i) } go func() { wg.Wait() close(c1) }() for n := range c1 { fmt.Println(n) } return nil, nil } func work(wg *sync.WaitGroup, c1 chan<- int, n int) { if n == 1 { time.Sleep(1 * time.Second) } c1 <- n wg.Done() }