主题
文章
项目
资源
图书
Go网址导航
下载
官方文档
英文文档
中文文档
标准库中文版
Go指南
注册
登录
首页
主题
Go问与答
如何理解这个buffer为1的channel在select中的行为
sheepbao
·
· 1446 次点击
```go ch := make(chan int, 1) for i := 0; i < 10; i++ { select { case x := <-ch: fmt.Println(x) // "0" "2" "4" "6" "8" case ch <- i: } } ``` buffer为1,这里的case是怎么选择的,i=0是第一个还是第二个case?
阅读全文
查看全部 3 个评论
sheepbao
谢谢
评论于 2016-08-15 09:36:28
#3
更多评论
brucelandor
i = 0的时候执行第二个。select里面哪个可以执行就执行哪个。当有多个case可以执行的时候就随机选择一个执行。
评论于 2016-08-15 09:29:31
#1
sheepbao
哦,懂了,当i = 1是,因为buffer里有个0了,所以执行了第一个case,如果把buffer改为2,或者更大就是随机选个case执行了。
评论于 2016-08-15 09:36:21
#2
我要评论
用户登录
记住登录状态
没有账号?
注册
忘记密码?
或
GitHub 登录
Gitea 登录
Go今日面试题
今日阅读排行
一周阅读排行
X
登录和大家一起探讨吧
用户名
密码
记住登录状态
登录
GitHub 登录
忘记密码?
还不是会员
现在注册