本文實例講述了Go語言的管道Channel用法。分享給大家供大家參考。具體分析如下:
channel 是有類型的管道,可以用 channel 操作符 - 對其發(fā)送或者接收值。
ch - v // 將 v 送入 channel ch。
v := -ch // 從 ch 接收,并且賦值給 v。
(“箭頭”就是數(shù)據(jù)流的方向。)
和 map 與 slice 一樣,channel 使用前必須創(chuàng)建:
ch := make(chan int)
默認(rèn)情況下,在另一端準(zhǔn)備好之前,發(fā)送和接收都會阻塞。這使得 goroutine 可以在沒有明確的鎖或競態(tài)變量的情況下進(jìn)行同步。
復(fù)制代碼 代碼如下:
package main
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語言程序設(shè)計有所幫助。
您可能感興趣的文章:- golang判斷chan channel是否關(guān)閉的方法
- Golang中channel使用的一些小技巧
- Golang優(yōu)雅關(guān)閉channel的方法示例
- golang中單向channel的語法介紹
- Go語言中 Channel 詳解
- 淺談Go Channel 高級實踐
- Go中Channel發(fā)送和接收操作指南