首页后端开发其他后端知识对select的理解有多少,golang当中如何学习

对select的理解有多少,golang当中如何学习

时间2024-03-27 05:08:03发布访客分类其他后端知识浏览849
导读:关于“对select的理解有多少,golang当中如何学习”的知识点有一些人不是很理解,对此小编给大家总结了相关内容,文中的内容简单清晰,易于学习与理解,具有一定的参考学习价值,希望能对大家有所帮助,接下来就跟随小编一起学习一下“对sele...
关于“对select的理解有多少,golang当中如何学习”的知识点有一些人不是很理解,对此小编给大家总结了相关内容,文中的内容简单清晰,易于学习与理解,具有一定的参考学习价值,希望能对大家有所帮助,接下来就跟随小编一起学习一下“对select的理解有多少,golang当中如何学习”吧。

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 下的代码块最终被执行。



以上就是关于对select的理解有多少,golang当中如何学习的介绍,本文内容仅供参考,有需要的朋友可以借鉴了解看看,希望对大家学习或工作,想要了解更多欢迎关注网络,小编每天都会为大家更新不同的知识。

声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!

golanggo

若转载请注明出处: 对select的理解有多少,golang当中如何学习
本文地址: https://pptw.com/jishu/653999.html
Go有哪些命名规范,哪些要点要注意 Bootstrap的验证图标删除的操作是怎样的

游客 回复需填写必要信息