```
用两个channel来实现阻塞,需要注意的就是最后输出需要考虑其中一个channel已关闭,不能再次触发阻塞
a := []int{1, 2, 3, 4, 5}
b := []string{"a", "b", "c", "d", "e"}
var wg sync.WaitGroup
//两个chan
ch1 := make(chan struct{})
ch2 := make(chan struct{})
wg.Add(2)
go func() {
defer wg.Done()
for _, v := range a {
<-ch1
fmt.Println(v)
ch2 <- struct{}{}
}
}()
go func() {
defer wg.Done()
for i, v := range b {
<-ch2
fmt.Println(v)
if i != len(b)-1 {
ch1 <- struct{}{}
}
}
}()
ch1 <- struct{}{}
wg.Wait()
```
评论