为什么选择GoLang中的语句

阿伦:

正在学习Go,在此示例中,我可以看到该select语句使goroutine等待多个通信操作

我们真的需要select声明吗?我的下面做了同样的事情,没有select声明

func runForChannel1(channel1 chan string) {
    time.Sleep(1 * time.Second)
    channel1 <- "Hi Arun ... I am Channel-1"
}

func runForChannel2(channel2 chan string) {
    time.Sleep(2 * time.Second)
    channel2 <- "Hi Arun ... I am Channel-2"
}

func testSelect() {
    channel1 := make(chan string)
    channel2 := make(chan string)

    go runForChannel1(channel1)
    go runForChannel2(channel2)

    chval1, chval2 := <-channel1, <-channel2
    fmt.Println(chval1, chval2)

}

func main() {
    testSelect()
}

没有select陈述,我能够等待两个渠道获得其价值...为什么我们需要Select陈述?有人可以教育我吗?

沃尔克:

我们真的需要一个select语句吗?

是。如果能够执行多个通道操作,则没有用户代码可以选择几种可能的通道操作之一;如果没有准备就绪,则用户代码不能选择任何一种(默认)。

(您的代码所做的事情完全不同。)

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

为什么golang select语句不会随机选择案例

“选择 ;” 为什么这个语句存在于 postgresql 中

为什么for循环选择了错误的IF语句路径?

为什么“选择”被称为DML语句?

为什么我的“选择变量”语句使存储过程没有在表中插入任何内容?

Golang中的空语句是什么?

Golang频道选择语句

为什么在golang中将其称为“分解式”导入语句?

为什么“ continue”语句在JavaScript中不好?

为什么在php中需要此语句

为什么我的代码中的 if 语句被忽略?

为什么跳过函数定义中的 if 语句?

为什么不鼓励在选择语句中使用通配符*?

为什么在这条语句附近会出现选择错误?

为什么在Java 7中switch语句比String语句要快?

为什么我在单个数据库中的插入/选择语句出现交叉引用错误

Golang:为什么我的选择不收听频道?

为什么在golang中需要:=符号?

为什么or语句比in语句快?

为什么在golang中[int] int {0}与make([] int,1,1)的DeepEqual失败?有其他选择吗?

为什么指令选择器在`[]中

为什么if语句被忽略?

为什么在此示例中Map会有return语句?

为什么以下语句在Java中给出不同的输出?

为什么是0 C ++中的有效语句?

为什么在Java中尝试/捕获或同步需要语句块?

为什么我的“如果不是”语句在Python中失败

为什么Java API的有看似怪异的分配中的if语句?

为什么我在Scratch中的if-then语句不会触发?