[Go] golang的select多路选择功能

基于select的多路复用:
1.解决如果一个channel中没有事件发过来,程序会立即阻塞,无法接收到第二个channel中的事件
2.一般每一个case都代表一个通信操作,多个case会选一个能执行的
3.default会默认执行,因此可以作为轮询channel来用

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
package main
 
import (
    "fmt"
)
 
func main() {
    //定义一个缓冲通道,大小是1
    ch := make(chan int, 1)
    for i := 0; i < 10; i++ {
        //select多路复用
        //1.第一个case会阻塞,第二个case执行0发送到channel
        //2.第一个case会执行打印channel中的值,第二个case会阻塞
        //3.第一个阻塞,第二个执行2会发送到channel 交叉执行下去
        select {
        case x := <-ch:
            fmt.Println(x)
        case ch <- i:
        }
    }
}

 

  

posted @   唯一客服系统开发笔记  阅读(661)  评论(0编辑  收藏  举报
编辑推荐:
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具
历史上的今天:
2016-02-21 [android]常见的adb指令
2016-02-21 [android]android下apk的安装过程
2016-02-21 [前端]css前端样式的模块化
2016-02-21 [android]android项目的目录结构
点击右上角即可分享
微信分享提示
1
chat with us