Golang 学习中的疑问,请教一下

2019-08-08 16:30:34 +08:00
 www6688w

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 是如何进行判断的?

2661 次点击
所在节点    程序员
22 条回复
www6688w
2019-08-09 10:56:56 +08:00
@laodao1990 多谢指点,不过我个人学习习惯先看一些视频教程,简单入门之后再啃书。你说的是这一本吗? https://book.douban.com/subject/27044219/
laodao1990
2019-08-15 16:24:01 +08:00
@www6688w 是的。这个是官方翻译的,github 上还有一个是网友自己翻译的

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/590217

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX