Go中如何使用select遍历多个通道
短信预约 -IT技能 免费直播动态提醒
在Go中,可以使用select
语句来遍历多个通道。select
语句可以同时监听多个通道的操作,并在其中任意一个通道准备就绪时执行相应的操作。
下面是一个使用select
语句遍历多个通道的示例:
package main
import (
"fmt"
)
func main() {
// 创建两个通道
ch1 := make(chan int)
ch2 := make(chan int)
// 向第一个通道发送数据
go func() {
for i := 0; i < 5; i++ {
ch1 <- i
}
close(ch1)
}()
// 向第二个通道发送数据
go func() {
for i := 100; i < 105; i++ {
ch2 <- i
}
close(ch2)
}()
// 遍历多个通道
for {
select {
case v, ok := <-ch1:
if !ok {
ch1 = nil
} else {
fmt.Println("From ch1:", v)
}
case v, ok := <-ch2:
if !ok {
ch2 = nil
} else {
fmt.Println("From ch2:", v)
}
}
// 判断所有通道是否已关闭
if ch1 == nil && ch2 == nil {
break
}
}
}
在上面的示例中,我们创建了两个通道ch1
和ch2
,并向每个通道发送一些数据。然后使用select
语句遍历这两个通道,当其中任意一个通道准备就绪时,我们就从该通道中读取数据并打印出来,直到所有通道都关闭为止。
免责声明:
① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。
② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341