golang 中的chanel用于多个goroutines之间的通信,相当于linux中的阻塞的管道操作,可以配置为具有只读只写的属性:
只读:<-ch
只写:ch<-
创建chan时,可以指定管道的单位和缓冲区的大小。
具体参见下面代码:
package main 2 3 import "fmt" 4 //创建只读的管道 5 func sum(arrays []int,ch chan<- int) { 6 sum := 0 7 for _,value := range arrays { 8 sum += value 9 } 10 ch <- sum 11 } 12 func main() { 13 //20为管道的数量 14 arrayChan := make(chan int,20) 15 arrayInt := []int{1,2,3,4,5,6,7,8,9,10,11,12,13,14,15} 16 for t := 0; t < 10; t++ { 17 length := len(arrayInt) 18 go sum(arrayInt[length-t:],arrayChan) 19 } 20 arrayResult := [10]int{0} 21 for i := 0; i < 10; i++ { 22 //从管道中读取10次 23 arrayResult[i] = <-arrayChan 24 } 25 fmt.Println(arrayResult) 26 }
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。