博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Go语言的管道Channel用法
阅读量:6619 次
发布时间:2019-06-25

本文共 743 字,大约阅读时间需要 2 分钟。

本文实例讲述了Go语言的管道Channel用法。分享给大家供大家参考。具体分析如下:

channel 是有类型的管道,可以用 channel 操作符 <- 对其发送或者接收值。

ch <- v // 将 v 送入 channel ch。
v := <-ch // 从 ch 接收,并且赋值给 v。
(“箭头”就是数据流的方向。)
和 map 与 slice 一样,channel 使用前必须创建:
ch := make(chan int)
默认情况下,在另一端准备好之前,发送和接收都会阻塞。这使得 goroutine 可以在没有明确的锁或竞态变量的情况下进行同步。

代码如下:
package mainimport "fmt"func sum(a []int, c chan int) {    sum := 0    for _, v := range a {        sum += v    }    c <- sum  // send sum to c}func main() {    a := []int{
7, 2, 8, -9, 4, 0} c := make(chan int) go sum(a[:len(a)/2], c) go sum(a[len(a)/2:], c) x, y := <-c, <-c // receive from c fmt.Println(x, y, x + y)}

 

希望本文所述对大家的Go语言程序设计有所帮助。

本文转自张昺华-sky博客园博客,原文链接:http://www.cnblogs.com/bonelee/p/6523549.html,如需转载请自行联系原作者

你可能感兴趣的文章
ovirt官方安装文档 附录G
查看>>
磁盘故障小案例
查看>>
HTML
查看>>
我的友情链接
查看>>
POJ 3335 Rotating Scoreboard 半平面交
查看>>
域名和网址链接被微信浏览器拦截怎么办 微信屏蔽网址打开如何解决
查看>>
使用SQL Server Analysis Services数据挖掘的关联规则实现商品推荐功能(二)
查看>>
ubuntu下安装jdk
查看>>
python操作数据库-安装
查看>>
你真的了解interface和内部类么
查看>>
kuangbin专题七 POJ3264 Balanced Lineup (线段树最大最小)
查看>>
JS动画效果链接汇总
查看>>
陈云川的OPENLDAP系列
查看>>
P1197 [JSOI2008]星球大战
查看>>
XML转义字符
查看>>
mysql设置字符集CHARACTER SET
查看>>
Perl完全自学手册图文教程
查看>>
wordpress拿WebShell
查看>>
校园的早晨
查看>>
oracle取前几行|中间几行|后几行
查看>>