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) }