报道:go的数据类型-其他数据类型-channel(二)
腾讯云 2023-04-22 15:12:09


(相关资料图)

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-04-22

湖南法院1案例入选全国法院50件典型知识产权案例

2023-04-22

一季度济南商品住宅销售2.17万套,实现量价齐升“开门红”

2023-04-22

每日看点!2023年引滦入津、入唐春季供水启动 计划供水3.5亿立方米

2023-04-22

浩洋股份:2022年净利润3.56亿元,同比增长161.97% 环球热闻

2023-04-22

地滑之秀!球迷冲进场飞奔向梅西,在跑到梅西面前时不慎滑倒 热闻

2023-04-22

《海贼王》:红发和鹰眼谁更强

2023-04-22

(机翻润色)妨碍青梅竹马的恋爱有什么不好的......其实暗地里被S级美少女们喜欢 第55话-世界新消息

2023-04-22

世界今亮点!拿铁和摩卡的区别是什么 拿铁和摩卡的区别

2023-04-22

每日精选:脚掌疼痛是什么原因 脚掌疼痛是什么原因

2023-04-22

今头条!梦芭莎内衣是哪个国家的品牌_什么档次怎么样

2023-04-22

焦点消息!贵州省第九届老年人运动会广场舞比赛在安顺经开区举行

2023-04-22

快讯2023-04-22 01:37:08_全球观点

2023-04-22

芯海科技:融资净买入76.38万元,融资余额1.79亿元(04-07)

2023-04-22

北塘街道泰达御海社区:用心引领 护航成长 当前要闻

2023-04-22

环球热消息:教育部:毕业生求职需警惕陷阱

2023-04-22

空调外机不滴水是怎么回事_下面2个方法帮你解决-今日要闻

2023-04-22

当前快讯:北京顺义:目前共有高风险区96个 低风险区20个

2023-04-22

零次跑!郑州这些业务可网上办了

2023-04-22

环球视点!中关村:下属公司哌啶醇化合物的制备方法获发明专利证书

2023-04-22