go sync.WaitGroup和标签混合使用练习

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
func main() {
var wg sync.WaitGroup
wg.Add(2) // 因为有两个动作,所以增加2个计数

cesi_tab:
for i := 0; i <= 5; i++ {
for j := 0; j <= 5; j++ {
if j == 4 {
go func() {
fmt.Println("Goroutine 2")
wg.Done() // 操作完成,减少一个计数
}()
break cesi_tab
}
fmt.Printf("i is: %d, and j is: %d\n", i, j)
}
}
fmt.Println("ok@@@@")

go func() {
fmt.Println("Goroutine 1")
wg.Done() // 操作完成,减少一个计数
}()

wg.Wait() // 等待,直到计数为0
}
1
2
3
4
5
6
7
i is: 0, and j is: 0
i is: 0, and j is: 1
i is: 0, and j is: 2
i is: 0, and j is: 3
ok@@@@
Goroutine 1
Goroutine 2