官方的一道demo
package main
import "fmt"
func sum(s []int, c chan int) {
sum := 0
for _, v := range s {
sum += v
}
c <- sum // send sum to c
}
func main() {
s := []int{7, 2, 8, -9, 4, 0}
c := make(chan int)
go sum(s[:len(s)/2], c) // 7,2,8 = 17
go sum(s[len(s)/2:], c) // -9,4,0 = -5
x, y := <-c, <-c // receive from c
//
fmt.Println(x, y, x+y) // 17,-5,12
}
正常按照先进先出结果应该是 17,-5,12
为何打印出的结果是 -5,17,12 。
不解。求大佬解答下
go sum() 是异步执行的,你起了两个,这个两个任务谁先执行完毕,谁后执行完毕的顺序是不确定的。