package main
import (
"fmt"
"sync"
)
func PrintCat(fishCH,catCH chan bool){
defer waitgroup.Done()
defer close(catCH)
for i:= 0; i <100;i++{
<-fishCH
fmt.Println("cat ...")
catCH <- true
}
}
func PrintDog(catCH,dogCH chan bool){
defer waitgroup.Done()
defer close(dogCH)
for i:= 0; i <100;i++{
<-catCH
fmt.Println("dog ...")
dogCH<-true
}
}
func PrintFish(dogCH,fishCH chan bool){
defer waitgroup.Done()
defer close(fishCH)
for i:= 0; i <100;i++{
<-dogCH
fmt.Println("fish ...")
fishCH<-true
}
}
var waitgroup sync.WaitGroup
func main() {
catCH := make(chan bool,1)
dogCH := make(chan bool,1)
fishCH := make(chan bool,1)
fishCH <- true
go PrintFish(dogCH,fishCH)
go PrintDog(catCH,dogCH)
go PrintCat(fishCH,catCH)
waitgroup.Add(3)
waitgroup.Wait()
}
golang面试题-顺序打印cat、dog、fish各100次
- 本文链接: https://gaodongfei.com/archives/print-cat-dog-fish-100
- 版权声明: 本博客所有文章除特别声明外,均采用CC BY-NC-SA 3.0 许可协议。转载请注明出处!