当前位置:  开发笔记 > 编程语言 > 正文

关于golang当中对select的理解

下面由Golang教程​栏目给大家介绍关于golang当中对select的理解,希望对需要的朋友有所帮助!Select语句和Swithc语句的句式十分相似。

下面由Golang教程栏目给大家介绍关于golang当中对select的理解,希望对需要的朋友有所帮助!

这个说法是对的,监听(Channel 的) IO 操作并作出相应动作确实是 Select 的应用场景,但是千万不要误以为 Select 语句是在选择哪个 case 下的 Channel 操作被执行了!这么理解是错的!Select 真正会选择的是哪个 case 下的 Channel 操作可以被成功执行,则执行该 case 下的代码块。

比如,当一个 Channel c1 被写入一条数据

c1 := make(chan string, 1)c1 <- "Hello World!"

如果我们有以下 Select 判断语句

select {
    case <-c1:
        fmt.Println("Case 1 is selected")
    case c1<-"Hello World!":
        fmt.Println("Case 2 is selected")
    default :
        fmt.Println("Default is selected")}

你会得到如下结果

Case 1 is selected

因为 c1 被写入了一条数据,所以我们可以成功 “从 c1 读出一条数据”。也就是第一个 case 可以被成功执行。所以,第一个 case 下的代码块最终被执行。

以上就是关于golang当中对select的理解的详细内容,更多请关注其它相关文章!

推荐阅读
sx-March23
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有