package main
import (
"fmt"
_"time"
)
func sum (s [] int, c chan int) {
sum := 0
for _,v := range s {
sum += v
}
c <- sum
}
func main () {
s := []int{7, 2, 8, -9, 4, 0}
c := make(chan int)
fmt.Println(s[:len(s)/2])
fmt.Println(s[len(s)/2:])
go sum(s[:len(s)/2],c)
//time.Sleep(1*time.Second)
go sum(s[len(s)/2:],c)
x, y := <-c, <-c
fmt.Println(x,y,x+y)
}
若后一个协程先创建时输出结果如下:
[7 2 8]
[-9 4 0]
-5 17 12
若前一个协程先创建时输出结果如下:
[7 2 8]
[-9 4 0]
17 -5 12
若两个协程之间加延时可以保证第一个协程先创建输出结果肯定是:
[7 2 8]
[-9 4 0]
17 -5 12