本文實(shí)例講述了Go語(yǔ)言的管道Channel用法。分享給大家供大家參考。具體分析如下:
channel 是有類型的管道,可以用 channel 操作符 - 對(duì)其發(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ā)送和接收都會(huì)阻塞。這使得 goroutine 可以在沒有明確的鎖或競(jìng)態(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)
}
希望本文所述對(duì)大家的Go語(yǔ)言程序設(shè)計(jì)有所幫助。
您可能感興趣的文章:- golang判斷chan channel是否關(guān)閉的方法
- Golang中channel使用的一些小技巧
- Golang優(yōu)雅關(guān)閉channel的方法示例
- golang中單向channel的語(yǔ)法介紹
- Go語(yǔ)言中 Channel 詳解
- 淺談Go Channel 高級(jí)實(shí)踐
- Go中Channel發(fā)送和接收操作指南