如何在Go中动态频道列表中选择输入?

Go具有一种机制,可以从几个通道之一的select语句中进行阻塞读取。所以你可以说


select {

    case <- c1:

    case <- c2:

}

将阻塞,直到我们从这两个通道中的任何一个获得输入。非常好。


但这要求我在源代码中指定要轮询的通道数。如果我有一个通道的一部分或数组,并且想在获得任何通道的输入之前都想阻塞,该怎么办?


jeck猫
浏览 175回答 3
3回答

潇潇雨雨

只是想一想,但您可以使用多路复用模式,在该模式中产生一个带有2个通道的goroutine,该通道在两个通道上均阻塞,然后将输出发送到新通道。然后,您可以从列表中动态构建这些树,将所有内容集中到单个通道,然后继续阅读。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go