package main
import "fmt"
/**values [] chan 整型*/
func sum(values []int, resultChan chan int) {
sum := 0
//循环数组求和
for _, value := range values {
sum += value
}
resultChan <- sum //将计算结果发送到channel中
}
//函数调用前使用关键字go,我们即可让该函数以goroutine方式执行。goroutine是一种 比线程更加轻盈、更省资源的协程
func main() {
values := []int{1, 2, 3, 4, 5, 6, 7, 8, 9, 10}
//切片是一种动态长度的数组 可以使用make创建 make([]T, length, capacity) 参数分别为 类型(数组 ,map,chan) 长度 最大长度
resultChan := make(chan int, 2)
//默认 startIndex 时将表示从 arr 的第一个元素开始。默认 endIndex 时将表示一直到arr的最后一个元素。
//s1 := s[startIndex:endIndex]
// 第一个go函数传入值是 数组 1-5的和
//第二个go函数传入是 数组 6-10的和
go sum(values[:len(values)/2], resultChan)
go sum(values[len(values)/2:], resultChan)
//sum1 := <-resultChan
sum1, sum2 := <-resultChan, <-resultChan
fmt.Println("Result:", sum1, sum2, sum1+sum2)
//fmt.Println("Result:",sum1)
}
原文:https://www.cnblogs.com/Ychao/p/14652848.html