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

  

posted on 2021-04-13 13:46  超灬超  阅读(61)  评论(0编辑  收藏  举报