[Go] 多线程交替打印1-100
package main
import (
"fmt"
"sync"
)
func printNum(wg *sync.WaitGroup, curr, next chan struct{}, start, step int) {
defer wg.Done()
for i := start; i <= 100; i += step {
<-curr
fmt.Println(i)
next <- struct{}{}
}
}
func main() {
var wg sync.WaitGroup
wg.Add(2)
ch1 := make(chan struct{}, 1)
ch2 := make(chan struct{}, 1)
go printNum(&wg, ch1, ch2, 1, 2)
go printNum(&wg, ch2, ch1, 2, 2)
ch1 <- struct{}{}
wg.Wait()
close(ch1)
close(ch2)
}