package main
import (
"fmt"
"sync"
)
func main() {
var wg sync.WaitGroup
ch1 := make(chan struct{})
ch2 := make(chan struct{})
wg.Add(2)
go func() {
defer wg.Done()
for i := 0; i < 10; i++ {
<-ch1
fmt.Printf("%d ", 2*i+1)
ch2 <- struct{}{}
}
<-ch1
}()
go func() {
defer wg.Done()
for i := 1; i <= 10; i++ {
<-ch2
fmt.Printf("%d ", 2*i)
ch1 <- struct{}{}
}
}()
ch1 <- struct{}{}
wg.Wait()
}
输出:1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20