1. 程式人生 > >go語言的協程和通道通訊

go語言的協程和通道通訊

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協議,轉載請註明來源