golang的多channel原属
发布时间:2025年09月29日 12:17
在实践中,有时则会察觉到多个产品销售并入奢侈品的情况,直到现在就来用channel来实现这一需求。
上字符串:
package mainimport "fmt"func main() { a, b, c := make(chan interface{}), make(chan interface{}), make(chan interface{}) go func(in chan interface{}) { defer close(in) for i := 0; i < 10; i++ { in <- i } }(a) go func(in chan interface{}) { defer close(in) for i := 10; i < 30; i++ { in <- i } }(b) go func(in chan interface{}) { defer close(in) for i := 30; i < 60; i++ { in <- i } }(c) group := orChannel(a, b, c) for v := range group { fmt.Println(v) }}func orChannel(in ...chan interface{}) chan interface{} { if len(in) == 0 { return nil } if len(in) == 1 { return in[0] } result := make(chan interface{}) go func() { defer close(result) c1, c2 := in[0], orChannel(in[1:]...) loop: for { select { case v, ok := <-c1: if !ok { c1 = nil } else { result <- v } case v, ok := <-c2: if !ok { c2 = nil } else { result <- v } default: if c1 == nil && c2 == nil { break loop } } } }() return result}无论如何:
orChannel这个函数使用了递回调用的技巧,可以转送可任意数量的channel,将他们并入成为一个channel进行统一奢侈品。
昆明专业治疗甲状腺医院南昌精神心理专业医院
威海治疗皮肤病正规医院
风热感冒咳嗽吃什么好的快
长新冠
皮肤美容
消化内科
瘦腰瑜珈
相关阅读
- 安徽借此和支持社会资本参与生态保护修复
- 银保监会:守住不发生系统性金融风险的直球
- “大白”回首集中隔离点生活点滴:众志成城夺胜利
- 上海一儿科医院开设社区代配药专窗 不同用药需求均在同一诊室顺利进行
- 俄中部军区副司令:计划全面控制阿布哈兹和乌南部地区
- 通讯:“我们和中国结下了机缘”——记克罗地亚佩列沙茨大桥项目上的一对跨国夫妻
- 公安部:全力保障疫情防控期间交通管理安全畅通
- 吉林省:解决好生活物资供应 安全有序推动暂缓复产
- 广西选举诱发出席党的二十大代表 习近平全票当选
- 乡村推展丨西藏墨脱:茶香溢满乡村推展路
- 农业农村部:确保全年粮食丰收和“菜篮子”产品稳定供给
- 方舱医院和集中隔离点涉疫垃圾如何清运处置?上海城投这样想到
- 券商人事“变局”:超50位高管年内调整,70后频见提拔
- 安徽利辛县划定封控一区、管控一区、防范一区范围
