go語言的協程和通道通訊
阿新 • • 發佈:2018-12-23
2013-09-17
周海漢 2013.9.17 許式偉的《go語言程式設計》,有一個簡單的例子,描述go協程和通訊通道chan。挺優美的。如下:
[andy@s1 test]$ cat sum.go
package main
import "fmt"
func sum(values []int, myChan chan int) {
sum := 0
for _, value := range values {
sum += value
}
myChan <- sum //值傳到通道
}
func main() {
myChan := make ( chan int,2)
values := []int {1,2,3,5,5,4}
go sum(values,myChan) //協程1
go sum(values[:3],myChan) //協程2
sum1,sum2 := <-myChan, <-myChan
fmt.Println("Result:",sum1,sum2,sum1+sum2)
}
結果: [[email protected] test]$ go run sum.go Result: 20 6 26
如非註明轉載, 均為原創. 本站遵循 知識共享CC協議,轉載請註明來源