go的数据类型-其他数据类型-channel(二)

来源:腾讯云 时间:2023-04-24 10:42:17


【资料图】

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之间的通信和同步,从而使程序变得简单和高效。

X 关闭

go的数据类型-其他数据类型-channel(二)

以下是一个使用Channel的示例程序,该程序创建了两个Goroutine,并使用Channel在它们之间进行通信和同步。

2023-04-24

国家航天局、中国科学院联合发布中国首次火星探测火星全球影像图_天天最新

上证报中国证券网讯据国家航天局消息,在2023年“中国航天日”主场活动启动仪式上,国家航天局和中国科学院

2023-04-24

焦点速看:读书之美|人民网书香之夜:与梁晓声、刘烨等20余位名人共享书香

学问勤中得,萤窗万卷书。4月23日是第二十八个世界读书日,人民网“文艺星开讲”推出特别策划——书香之夜

2023-04-24

快报:欧阳修·丰乐亭记

1、《丰乐亭记》是北宋文学家欧阳修创作的一篇散文。2、这篇文章除记述建丰乐亭的经过及与滁人共游之乐外,

2023-04-24

【独家】歹徒持假枪抢劫阿根廷一华人超市 不料被店主刺死

中新网4月24日电据阿根廷华人网消息,多家阿媒报道,日前在阿根廷布省维多利亚地区,一名歹徒持一把“L”型

2023-04-24

千川映月唱莲歌——“叶嘉莹著述版本图录与提要”创作浅谈

【著书者说】  叶嘉莹先生是中国古典诗词研究集大成者,一生致力于中华诗教传承。

2023-04-24

当前播报:手机打码赚钱正规网站_手机打码赚钱

1、第一步:这里举一个例子。首先你需要找一个网站下载一些软件,在下载的网站上注册你的工号,然后登陆软

2023-04-24

天天实时:无缘CBA季后赛四强!广东男篮21年来最差一季 中国篮球告别一个时代

广东男篮在2023年4月23日这个夜晚,倒在了CBA季后赛四强之外,延续了20个赛季的纪录终结了。本赛季是CBA历

2023-04-24

将油漆存放在炎热的阁楼中有火灾隐患吗?_儿子十八岁送什么礼物好一些|全球速看料

将剩余的油漆存放在干燥、阴凉的地方。在家居装修项目结束时,经常会有部分使用过的油漆罐需要存放。尽管阁

2023-04-24

梅西全家回巴萨原因被曝 巴黎赢球梅西获三天假期回去度假

球天下4月24日讯近期有媒体表示梅西全家带着15个行李箱返回了巴塞罗那,这不由得令人将此事与梅西今夏回归

2023-04-24

Copyright ?  2015-2022 华声科技网版权所有  备案号:京ICP备2021034106号-36   联系邮箱:55 16 53 8 @qq.com