for (大分類) {
 for (中分類) {
  for (小分類) {

   wg := sync.WaitGroup{}
   cpus := runtime.NumCPU()
   errCh := make(chan error, cpus)
   defer close(errCh)

   for (アイテム) {
    wg.Add(1)

    go func() {
     defer wg.Done()
     errCh <- 他の関数()
    }()
   }

   err := <-errCh
   if err != nil {
    return だめです
   }

   wg.Wait()
  }
 }
}

こんなコードでwaitしっぱなしになるんだけど
なぜなんでしょうか(´・ω・`)
途中の即時関数にwgのポインタ(&wg)渡すのもやってみたけど、
結果変わらなかった