现在有4个协程,分别对应编号为1,2,3,4,每秒钟就有一个协程打印自己的编号,要求编写一个程序,让输出的编号总是按照1,2,3,4,1,2,3,4这样的规律一直打印下去
type Token struct {
}
func newWorker(id int, ch chan Token, nextCh chan Token) {
for {
token := <-ch
fmt.Println(id + 1)
time.Sleep(time.Second)
nextCh <- token
}
}
func testGoroutine() {
chs := []chan Token{make(chan Token), make(chan Token), make(chan Token), make(chan Token)}
for i := 0; i < 4; i++ {
go newWorker(i, chs[i], chs[(i+1)%4])
}
chs[0] <- struct{}{}
select {}
}