go的数据类型-其他数据类型-channel(二)
(资料图片)
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(二)
- 造梦西游3土行孙掉什么装备_造梦西游3土行孙掉什么
- 精选!心理咨询师证报考条件和年龄_心理咨询师证报考条件
- 今日现货黄金价格多少(2023年4月21日)
- 精选!Python面向对象编程-魔术方法-__iter__和__next__方法(一)
- 天天要闻:20斤甘蔗可以熬几斤红糖?
- 贵州岑巩:党建“红”引领产业“绿”
- 全球今热点:青铜峡市气象台发布沙尘暴黄色预警【III级/较重】
- 摩登舞鞋品牌有哪些(摩登舞鞋) 实时
- 一季度民航运输同比增长近四成
- 虐杀原形2鼠标滑动不流畅 鼠标滑动不流畅 快看
- 要闻:如何注册公司 【集团公司注册流程】注册集团公司有哪些条件?
- 零跑汽车与大陆集团签署战略合作框架协议
- 天天即时:通讯:中巴技术合作助力巴西企业拓展市场
- 舰姬的演员表_舰姬的简介
- 【天天快播报】三美股份:一季度归母净利润1997.22万元,同比减89.65%
- 快看点丨九安医疗:4月20日融资买入2298.4万元,融资融券余额13.8亿元
- 万年青:4月20日融券净卖出2100股,连续3日累计净卖出4700股
- 国宝重器亮相汉字文化大观展,将持续到8月13日
- 联测科技:4月20日融资买入9828元,融资融券余额9174.31万元
- 当前快讯:连续三年净利润下降,去年罚金7000万,浦发银行怎么了?
- 辽宁省人大常委会原副主任孙国相受贿案一审开庭
- 环球最资讯丨长峰旗下上海曹安医院三楼宿舍及厨房区域被查封:排查中发现消防隐患
- 怎么能让牙齿变白_怎么让牙齿变白妙招-简讯
- 当前速看:融创境外债务重组已获超75%债权人支持
- 青海:河湟谷地春来晚 万树梨花盛放迎客来
- 环球最资讯丨劝沉迷于网络游戏的同学一段话_沉迷网络游戏的劝解
- 全球百事通!中消协发布养老消费调查:“医养结合”更受欢迎 适老化消费环境仍需提升
- 海鸥住工:ROE降至2.57%,投资、筹资现金流均为负丨年报拆解
- 外交部发言人:敦促美国等发达国家审慎评估自身经济金融政策外溢影响|环球速看