Go语言的管道Channel用法实例
2015-02-26 11:37
851 查看
本文实例讲述了Go语言的管道Channel用法。分享给大家供大家参考。具体分析如下:
channel 是有类型的管道,可以用 channel 操作符 <- 对其发送或者接收值。
ch <- v // 将 v 送入 channel ch。
v := <-ch // 从 ch 接收,并且赋值给 v。
(“箭头”就是数据流的方向。)
和 map 与 slice 一样,channel 使用前必须创建:
ch := make(chan int)
默认情况下,在另一端准备好之前,发送和接收都会阻塞。这使得 goroutine 可以在没有明确的锁或竞态变量的情况下进行同步。
import "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语言程序设计有所帮助。
您可能感兴趣的文章:
相关文章推荐
- Go语言的管道Channel用法实例
- Go语言的管道Channel用法
- go语言中if语句用法实例
- Go语言接口用法实例
- Go语言字典(map)用法实例分析【创建,填充,遍历,查找,修改,删除】
- Go语言map用法实例分析
- Go语言MD5加密用法实例
- GO语言练习:channel 工程实例
- GO语言标准错误处理机制error用法实例
- Go语言中的range用法实例分析
- Go语言操作redis用法实例
- go语言channel的别样用法
- Go语言 channel 管道 阻塞 死锁 经典问题
- go语言template用法实例
- Go语言中的switch用法实例分析
- Go语言map字典用法实例分析
- GO语言Defer用法实例分析
- Go语言正则表达式用法实例小结【查找、匹配、替换等】
- Go语言中的管道(Channel)总结
- Go语言中Select语句用法实例