1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
| func TestEgroupA(t *testing.T) {
// errgroup 部分
egroup := errgroup.Group{}
// 控制并发度
egroup.SetLimit(3)
// 启动协程并行工作
for i := 0; i < 5; i++ {
i := i // 特别注意,闭包问题
egroup.Go(func() error {
t.Logf("#%d", i)
return nil
})
}
// 首个非nil错误
if err := egroup.Wait(); err != nil {
t.Errorf("egroup got err: %s", err)
}
t.Logf("done")
}
func TestEgroupB(t *testing.T) {
a, b, c := "a", "b", "c"
list := []*string{&a, &b, &c}
// errgroup 部分
egroup := errgroup.Group{}
for k, v := range list {
k, v := k, v // 特别注意,闭包问题
egroup.Go(func() error {
t.Logf("#%d, v=>%v, val v=>%v", k, v, *v)
return nil
})
}
if err := egroup.Wait(); err != nil {
t.Errorf("egroup got err: %s", err)
}
t.Logf("done")
}
|