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

关键词:

为您推荐

戏怨攻略大全 戏怨游戏攻略第一章/第二章/第三章/第四章/第五章图文流程[多图] 今日报

戏怨游戏怎么通关?这款恐怖类型的解密游戏一共有五章,不同的章节关卡

来源:游戏鸟手游网2023-07-03

京东方A:2023年柔性AMOLED出货量目标为超1.2亿片

京东方A近期接受投资者调研时称,2023年,随着公司柔性AMOLED业务的

来源:新京报2023-07-03

税务小哥vlog:探访“专精特新”“小巨人”税费优惠政策培训

朝阳区税务局联合朝阳园管委会、朝阳区社保中心合作开展朝阳区内北京市

来源:北京商报官方账号2023-07-03

【世界播资讯】NBA5消息:太阳600万得戈登!热火追利拉德受阻,勇士再签1名后卫

前言NBA休赛期自由市场开启之后,各家球队动作频频,追逐心仪的球员,

来源:江湖再无24号2023-07-03

「抖音618团券节」热卖品牌榜出炉,这些商家卖爆了!|今日报

肯德基、海南爱大集国际旅行社、伊颜悦色 抖音618团券节期间,来

来源:互联网2023-07-03

莫里森(关于莫里森的简介)-环球热推荐

1、莫里森,1971年7月9日出生,美国田径运动员,是美国110米栏名将,曾

来源:互联网2023-07-03

单机卸率每小时3057吨 青岛港第26次刷新铁矿石接卸世界纪录 快看

每经AI快讯,7月2日,随着最后一个清舱机械吊装出舱,“远谊海”轮在青

来源:每日经济新闻2023-07-03

面部整形美学设计_面部整形大概多少钱

1、面部整形的概念比较模糊,需要具体情况具体分析才能判断价格;如果

来源:互联网2023-07-03