```
func TestGround(m *testing.T) {
wg := &sync.WaitGroup{}
// 添加这个管道后 会出现不输出的问题
chn := make(chan struct{})
//loading := []byte{'\\', '|', '/'}
go spinner(1500, chn)
for i := 0; i < 5; i++ {
wg.Add(1)
go func(i int) {
fmt.Printf("i:%d", i) // ------------------ 1
wg.Done()
}(i)
}
wg.Wait()
chn <- struct{}{}
fmt.Println("exit")
}
func spinner(delay time.Duration, chn chan struct{}) {
loop:
for {
select {
case <-chn:
break loop
default:
}
for _, r := range `-|/` {
fmt.Printf("\r%c", r)
time.Sleep(delay)
}
}
}
```
有2个问题想请教一下大家。
1. 直接贴代码,添加管道后会导致标记的 1 处 无法打印完整。貌似sync.WaitGroup失效了
2. 另外也想问下,我尝试在go func() {} 函数中执行长时间的操作(文件操作或者访问某个网页爬取数据),也会导致主线程wg.wait()失效
想问下这2个问题,多谢大家,困扰了好久。
更多评论