微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

golang chanel

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 举报,一经查实,本站将立刻删除。

相关推荐