采纳答案成功!
向帮助你的同学说点啥吧!感谢那些助人为乐的人
老师,为什么这里打出来的都是case w <- n : 的情况?我已经把前面的time.sleep去掉了,c1,c2应该是有数据的,为什么select不会执行相关的case?执行的都是w <- n这个case。
三个分支都会选中,这里因为一开始有n:=0,所以送给worker的数据永远是0。
我们把n:=0移到for的前面就可以看到c1,c2送过来的数据了。
好的!明白了!谢谢老师
老师,还有一个问题,就是关于timeout的问题,我把generator中的time.sleep时间已经缩小到100Microsecond,但在运行中,还是一直打出的是timeout,只有个别打出的是数据?
懂了,打错了。。。
但是我把内容输出的时候,是有进入其他case的,是因为我的代码错了?
func main() { var c1, c2 = generator(), generator() w := createWorker(0) for { n := 0 select { case n = <-c1: fmt.Println("FIRST CASE") case n = <-c2: fmt.Println("SECOND CASE") case w <- n: fmt.Println("THIRD CASE") } }}
go run xxx.go > out.txt
在out.txt能看到三种情况都有
但是送给worker的数据永远都是0。因为n:=0在for里面
登录后可查看更多问答,登录/注册
语法+分布式爬虫实战 为转型工程师量身打造
3.7k 14
691 1
2.0k 1
1.1k 12