问题:
go语言开启3个协程,分别按顺序打印出100次的cat,dog,mouse,如结果为
dog
cat
mouse
dog
cat
mouse
package main
import "fmt"
var quit chan int
func main() {
var chDog chan int
var chCat chan int
var chMouse chan int
quit = make(chan int)
chDog = make(chan int)
chCat = make(chan int)
chMouse = make(chan int)
go showDog(chDog, chCat)
go showCat(chCat, chMouse)
go showMouse(chMouse, chDog)
chDog <- 1
<-quit
}
func showDog(now chan int, next chan int) {
count := 0
for {
if count >= 100 {
quit <- 1
return
}
<-now
fmt.Println("dog")
count++
next <- 1
}
}
func showCat(now chan int, next chan int) {
count := 0
for {
if count >= 100 {
return
}
<-now
fmt.Println("cat")
count++
next <- 1
}
}
func showMouse(now chan int, next chan int) {
count := 0
for {
if count >= 100 {
return
}
<-now
fmt.Println("mouse")
count++
next <- 1
}
}