go的数据类型-其他数据类型-channel(二)-重点聚焦
2023-04-25 06:34:31来源:腾讯云
(资料图)
Channel的使用示例
以下是一个使用Channel的示例程序,该程序创建了两个Goroutine,并使用Channel在它们之间进行通信和同步。
package mainimport ("fmt""time")func worker(id int, jobs <-chan int, results chan<- int) {for j := range jobs {fmt.Printf("worker %d started job %d\n", id, j)time.Sleep(time.Second)fmt.Printf("worker %d finished job %d\n", id, j)results <- j * 2}}func main() {jobs := make(chan int, 100)results := make(chan int, 100)for w := 1; w <= 3; w++ {go worker(w, jobs, results)}for j := 1; j <= 9; j++ {jobs <- j}close(jobs)for a := 1; a <= 9; a++ {<-results}}
在这个示例程序中,我们定义了一个名为worker
的函数,它模拟了一个工作任务。这个函数接收一个jobs
的单向Channel用于接收工作任务,以及一个results
的单向Channel用于发送工作结果。当函数接收到一个工作任务时,它会等待一秒钟,然后将工作结果发送到results
的Channel中。
在main
函数中,我们创建了两个Channel:一个jobs
的Channel用于发送工作任务,一个results
的Channel用于接收工作结果。然后,我们启动了三个Goroutine,并将它们分别分配给worker
函数。接下来,我们向jobs
的Channel中发送了9个工作任务,并关闭了这个Channel。最后,我们从results
的Channel中接收了9个工作结果。
在这个示例程序中,我们使用Channel实现了工作任务的分配和工作结果的收集。通过使用Channel,我们可以轻松地实现Goroutine之间的通信和同步,从而使程序变得简单和高效。
本网推荐
- go的数据类型-其他数据类型-channel(二)-重点聚焦
- 中国工程院院士张洪程:丘陵山区农机化是我国农业现代化不可或缺的重要内容
- 2023上海车展:预售价14万起,新款创维HT-i Ⅱ预售|当前短讯
- 无缘无故的缘是什么意思_无缘无故的解释 环球视点
- 时讯:原单是不是就是假货_原单是什么意思
- 环球热点评!力反馈盾牌材料_力反馈盾牌
- 环球今日讯!幸福的生活充满阳光_幸福的生活
- 实时焦点:电讯报:曼联已启动对凯恩的竞标,列维要价不低于一亿镑
- 内盘期货直播室/原油直播间_内盘期货_全球热资讯
- 淄博烧烤大热,这类概念股也火了
- 恒烁股份04月24日主力资金大幅流出 天天头条
- 南山东社区:以人为本 为民解困|信息
- 成都一烧烤店每桌15元燃气费,吃烧烤收燃气费合理吗?
- 我的繁体字_我是什么意思_每日快报
- 全球讯息:图解侨源股份年报:第四季度单季净利润同比减49.73%
- 声雨竹官方旗舰店女装 声雨竹女装
- 万象更新人潮涌——各地文旅市场回暖复苏调查
- 新闻发布|今年滨州市将在滨州近海放流苗种6亿单位以上
- 起步价9元!银川市巡游出租汽车运价调整,5月4日起执行!
- 农行突发!张学禄,被查!A股跌破3300点! 世界快资讯
- 福斯特首季经营现金流净额-9.84亿2022年为0.26亿 焦点日报
- 焦点!迎战“麒麟电池”,宁德时代老对手中创新航独创OS电池量产下线!
- 嬉皮氏/cipisi是哪个国家的品牌_什么档次怎么样
- 蚂蚁庄园支付宝问答:蚂蚁庄园今日答案最新5.15 天天热消息
- 假民警带着准女友在派出所门口转悠?刑拘! 当前独家
- 中江:实训基地“搭台” 流动仲裁庭“上课”
- 全球速读:没挖导流槽的锅!SpaceX星舰发射台损坏:下次发射推迟
- 外媒预测:三星一季度利润暴跌96%
- 世界观察:紧急营救 部门联动用时19分钟打通生命通道
- 克拉玛依市警察协会成立-环球热文