1.

package main

import "fmt"

func sum(s []int, c chan int) {
sum :=
for _, v := range s {
sum += v
}
c <- sum // 把 sum 发送到通道 c
} func main() {
s := []int{, , , -, , } c := make(chan int) go sum(s[len(s)/:], c)
go sum(s[:len(s)/], c)
x, y := <-c, <-c // 从通道 c 中接收 fmt.Println(x, y, x+y)
}

输出

 - 

2.

package main

import "fmt"

func main() {
// 这里我们定义了一个可以存储整数类型的带缓冲通道
// 缓冲区大小为2
ch := make(chan int, ) // 因为 ch 是带缓冲的通道,我们可以同时发送两个数据
// 而不用立刻需要去同步读取数据
ch <-
ch <-
// 获取这两个数据
fmt.Println(<-ch)
fmt.Println(<-ch)
}

输出


3.

package main

import (
"fmt"
) func fibonacci(n int, c chan int) {
x, y := ,
for i := ; i < n; i++ {
c <- x
x, y = y, x+y
}
close(c)
} func main() {
c := make(chan int, )
go fibonacci(cap(c), c)
// range 函数遍历每个从通道接收到的数据,因为 c 在发送完 10 个
// 数据之后就关闭了通道,所以这里我们 range 函数在接收到 10 个数据
// 之后就结束了。如果上面的 c 通道不关闭,那么 range 函数就不
// 会结束,从而在接收第 11 个数据的时候就阻塞了。
for i := range c {
fmt.Println(i)
}
}

输出


最新文章

  1. [LeetCode] Max Sum of Rectangle No Larger Than K 最大矩阵和不超过K
  2. django&quot;动态网页&quot;,&quot;动态url&quot;,&quot;调试方法&quot;
  3. Debugging JTAG Connectivity Problems
  4. 【转】statfs获得硬盘使用情况 模拟linux命令 df
  5. 从linux内核中学到的编程技巧 【转】
  6. velocity的foreach下标
  7. AsyncTask delay延迟执行 或者顺序执行 问题
  8. CSS3特效----图片动态提示效果
  9. javascript中的异步 macrotask 和 microtask 简介
  10. python的变量与赋值
  11. Sublime Text2支持Vue语法高亮显示
  12. Windows Update第三方工具概览
  13. Zabbix Server 自带模板监控更加灵活MySQL数据库
  14. AtCoder Regular Contest 080 (ARC080) E - Young Maids 线段树 堆
  15. liunx总结题
  16. CentOS 无法通过 yum 安装新版 nodejs 解决办法(安装的还是老版的)
  17. STL中的Vector相关用法
  18. 出了一个js的题。
  19. linux shell 修改文本 sed
  20. Basic Calculator - Stack(表达式计算器)

热门文章

  1. gcc static静态编译选项提示错误修正(/usr/lib/ld: cannot find -lc)
  2. 百度编辑器UEditor源码模式下过滤div/style等html标签
  3. Andrew Ng-ML-第十七章-推荐系统
  4. chkconfig添加进入服务后,出现的现象
  5. mysql日志详解
  6. CoreSight介绍篇
  7. SQL语句--查询任务
  8. python-自定义异常,with用法
  9. seo标题关键字描述字数限制Title,keywords,description长度最长多长 ?
  10. JavaScript中几种 获取元素的方式