Go 的分支语句 “ select ”
我请想请教一下,我该如何通俗的理解这个语句的实际作用和运行原理,官方的说明如下:
“ select 是 Go 中的一个控制结构,类似于用于通信的 switch 语句。每个 case 必须是一个通信操作,要么是发送要么是接收。 select 随机执行一个可运行的 case。如果没有 case 可运行,它将阻塞,直到有 case 可运行。一个默认的子句应该总是可运行的。
1.每个 case 都必须是一个通信 2.所有 channel 表达式都会被求值 3.所有被发送的表达式都会被求值 4.如果任意某个通信可以进行,它就执行;其他被忽略。 5.如果有多个 case 都可以运行,Select 会随机公平地选出一个执行。其他不会执行。 ”
我自己不能完全的理解的是 “每个 case 都必须是一个通信”
我的疑问如下:
1.以上文中“通信”的定义是什么?也就是在 case 中可以放什么?表达式?还是什么?
2.selcet 分支中 case 是如何进行判断的?
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.