Go语言的管道Channel用法实例
本文实例讲述了Go语言的管道Channel用法。分享给大家供大家参考。具体分析如下:
channel是有类型的管道,可以用channel操作符<-对其发送或者接收值。
ch<-v//将v送入channelch。
v:=<-ch//从ch接收,并且赋值给v。
(“箭头”就是数据流的方向。)
和map与slice一样,channel使用前必须创建:
ch:=make(chanint)
默认情况下,在另一端准备好之前,发送和接收都会阻塞。这使得goroutine可以在没有明确的锁或竞态变量的情况下进行同步。
packagemain import"fmt" funcsum(a[]int,cchanint){ sum:=0 for_,v:=rangea{ sum+=v } c<-sum //sendsumtoc } funcmain(){ a:=[]int{7,2,8,-9,4,0} c:=make(chanint) gosum(a[:len(a)/2],c) gosum(a[len(a)/2:],c) x,y:=<-c,<-c //receivefromc fmt.Println(x,y,x+y) }
希望本文所述对大家的Go语言程序设计有所帮助。