循环打印: dog cat fox
package main
import (
"fmt"
"sync"
)
func main() {
var num int = 3
dog := make(chan struct{})
cat := make(chan struct{})
fox := make(chan struct{})
wg := &sync.WaitGroup{}
wg.Add(3)
go func(n int) {
defer wg.Done()
for i := 0; i < n; i++ {
<-dog
fmt.Println("dog")
cat <- struct{}{}
}
}(num)
go func(n int) {
defer wg.Done()
for i := 0; i < n; i++ {
<-cat
fmt.Println("cat")
fox <- struct{}{}
}
}(num)
go func(n int) {
defer wg.Done()
for i := 0; i < n; i++ {
fmt.Println("------", i)
<-fox
fmt.Println("fox")
if i < n-1 {
dog <- struct{}{}
}
}
}(num)
dog <- struct{}{}
wg.Wait()
fmt.Println("finished!!!")
}
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。