从品牌网站建设到网络营销策划,从策略到执行的一站式服务
这篇文章将为大家详细讲解有关关于golang当中对select的分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。
成都创新互联公司主营龙南网站建设的网络公司,主营网站建设方案,App定制开发,龙南h5微信平台小程序开发搭建,龙南网站营销推广欢迎龙南等地区企业咨询Select 语句和 Swithc 语句的句式十分相似,但是 Select 中的 Case 必须是一个通信操作(一个 Channel 操作)。其执行逻辑是:哪一个 Case 后面的 Channel 操作可以被成功执行,则执行该 Case 下的代码块。如果同时多个 Case 可被成功执行,则随机选择其中一个。如果所有 Case 均不可被成功执行,则执行 default 下的代码块。如果没有 default 则会阻塞并返回死锁错误。
监听 IO 操作,当 IO 操作发生时,触发相应的动作
这个说法是对的,监听(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的分析就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。
成都网站建设公司地址:成都市青羊区太升南路288号锦天国际A座10层 建设咨询028-86922220
成都快上网科技有限公司-四川网站建设设计公司 | 蜀ICP备19037934号 Copyright 2020,ALL Rights Reserved cdkjz.cn | 成都网站建设 | © Copyright 2020版权所有.
专家团队为您提供成都网站建设,成都网站设计,成都品牌网站设计,成都营销型网站制作等服务,成都建网站就找快上网! | 成都网站建设哪家好? | 网站建设地图