Go 并发编程基础(一)goroutine,channel

来源:互联网 发布:通过邮箱注册知乎 编辑:程序博客网 时间:2024/05/29 15:44
package mainimport (    "fmt")func sum(values []int, resultChan chan int) {    sum := 0    for _, value := range values {        sum += value    }    resultChan <- sum          //将运算结果写到channel中}func main() {    values := []int{1, 2, 3, 4, 5, 6, 7, 8, 9, 10}   //定义并初始化了一个大小为10的数字数组    resultChan := make(chan int, 2) //定义大小为2的channel    go sum(values[:len(values)/2], resultChan) //开启协程1 计算数组后半部分的和,并将结果写到channel中堵塞    go sum(values[len(values)/2:], resultChan) //开启协程2 计算数组前半部分的和,并将结果写到channel中堵塞    sum1, sum2 := <-resultChan, <-resultChan    //将chennel中堵塞的数据读出    fmt.Println("Result:", sum1, sum2, sum1+sum2)}
1 0