栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

如何收听N个频道?(动态选择语句)

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

如何收听N个频道?(动态选择语句)

您可以使用reflect包中的

Select
函数执行此操作:

func Select(cases []SelectCase) (chosen int, recv Value, recvOK bool)

Select执行案例列表中描述的选择操作。类似于Go
select语句,它阻塞直到至少一种情况可以继续进行,做出统一的伪随机选择然后执行该情况。它返回所选案例的索引,如果该案例是接收操作,则返回接收到的值和一个布尔值,指示该值是否对应于通道上的发送(而不是由于通道关闭而接收到的零值)。

您传递一个

SelectCase
结构数组,这些结构标识要选择的通道,操作的方向以及在发送操作的情况下要发送的值。

因此,您可以执行以下操作:

cases := make([]reflect.SelectCase, len(chans))for i, ch := range chans {    cases[i] = reflect.SelectCase{Dir: reflect.SelectRecv, Chan: reflect.ValueOf(ch)}}chosen, value, ok := reflect.Select(cases)// ok will be true if the channel has not been closed.ch := chans[chosen]msg := value.String()

您可以在此处尝试更加充实的示例:http :
//play.golang.org/p/8zwvSk4kjx



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/399582.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号