go chan 入门代码
package main import (
"fmt"
"sync"
"time"
) // 生产数据
func producer(num ...int)(ret<-chan int) {
out:=make(chan int)
go func() {
defer close(out)
for k,v:=range num {
fmt.Printf("我在生产第%d个数据\n",k)
out<-v
fmt.Printf("生产第%d个数据完成\n",k)
}
}()
ret=out
return
} // 从通道获取数据,计算数据
func square(inCh <-chan int) (ret <-chan int) {
out:=make(chan int)
go func() {
defer close(out)
for n:=range inCh{
out<-n*n
time.Sleep(1*time.Second)
}
}()
ret=out
return
} // 给通道启动协程
func merge(cs ...<-chan int)(ret <-chan int) {
out:=make(chan int,100)
var wg sync.WaitGroup
collect:= func(in<-chan int) {
defer wg.Done()
for n:=range in{
out<-n
}
} wg.Add(len(cs)) for k,n:=range cs{
fmt.Printf("我在给执行第%d个协程\n",k)
go collect(n)
fmt.Printf("执行第%d个协程完成\n",k)
} go func() {
wg.Wait()
close(out)
}()
ret=out
return
}
func main() {
in:=producer(0,1,2,3,4,5,6,7,8,9,10)
ch1:=square(in)
ch2:=square(in)
ch3:=square(in)
ch4:=square(in)
ch5:=square(in)
// 拿到数据结果
for ret:=range merge(ch1,ch2,ch3,ch4,ch5){
time.Sleep(1*time.Second)
fmt.Printf("%3d\n",ret)
} }
go chan 入门代码的更多相关文章
- TensorFlow(1)注解入门代码
学习当然要从官方的入门文档开始. 但是这篇入门对于从0开始的初学者似乎有些困难,尤其是对于神经网络知识还是一知半解的. 敲完理解一遍还是懵逼. TensorFlow经典入门代码学习备注如下. impo ...
- Mybatis最入门---代码自动生成(generatorConfig.xml配置)
[一步是咫尺,一步即天涯] 经过前文的叙述,各位看官是不是已经被Mybatis的强大功能给折服了呢?本文我们将介绍一个能够极大提升我们开发效率的插件:即代码自动生成.这里的代码自动生成包括,与数据库一 ...
- 使用Maven编译运行Storm入门代码(Storm starter)(转)
Storm 官方提供了入门代码(Storm starter),即 Storm安装教程 中所运行的实例(storm-starter-topologies-0.9.6.jar),该入门代码位于 /usr/ ...
- ActiveMQ入门系列二:入门代码实例(点对点模式)
在上一篇<ActiveMQ入门系列一:认识并安装ActiveMQ(Windows下)>中,大致介绍了ActiveMQ和一些概念,并下载.安装.启动他,还访问了他的控制台页面. 这篇,就用代 ...
- JavaScript: JavaScript的简介和入门代码演示
1.Javascript的发展历史介绍: javascript是指的实在网页上编写的编程语言,其主要是控制器html的动态显示效果.HTMl能带来的只是一些基本的页面的风格,而要展示的漂亮使用CSS, ...
- 【F#】 入门代码
找下感觉: 语法和go 如出一辙, 都是erlang派的语言 在 vs 中我没有找到自动缩进的快捷键 github上的F#代码也相对较少 // 在 http://fsharp.org 上了解有关 F# ...
- unity8个入门代码
01,基本碰撞检测代码 function OnCollisionEnter(theCollision:Collision){ if(theCollision.gameObject.name==&quo ...
- CSS快速入门-代码目录
我们写python代码或者其他代码的时候,发现文件会越来越多,这时候你就觉得有必要把代码文件进行整理了. 对代码整理的整理主要思路: 1.按功能(比如:可执行程序文件.数据库文件.视图文件) 2.按类 ...
- 《图说VR入门》——googleVR入门代码分析
本文章由cartzhang编写,转载请注明出处. 所有权利保留. 文章链接:http://blog.csdn.net/cartzhang/article/details/53013843 作者:car ...
随机推荐
- C# Thread Lock 笔记
多线程, 当使用共有变量时, 保持计算结果正确很重要: 看下面的例子: ; //private static object objlock = new object(); public static ...
- winform 所遇
主程序调用客程序: 方法一: Process.Start( System.Windows.Forms.Application.StartupPath + "\\SelfUpdate.exe& ...
- vmstat监控工具
vmstat监控工具 一.前言 很显然从名字中我们就可以知道vmstat是一个查看虚拟内存(Virtual Memory)使用状况的工具,但是怎样通过vmstat来发现系统中的瓶颈呢?在回答这个问题前 ...
- python基础--字典
Python基础--字典 字典的常用函数: dict.clear( )--->无任何返回值 说明: 清除字典内的所有的元素 语法: In [5]: dict.clear? Type: metho ...
- 查询数据库游标使用情况以及sql
----查询游标使用情况以及游标最大数---- SELECT MAX(A.VALUE) AS HIGHEST_OPEN_CUR, P.VALUE AS MAX_OPEN_CUR FROM V$SESS ...
- 前端开发【第三篇: JavaScript基础】
JavaScript是一门编程语言,浏览器内置了JavaScript语言的解释器,所以在浏览器上按照JavaScript语言的规则编写相应代码之,浏览器可以解释并做出相应的处理. 一.如何编写 1.J ...
- php:数组与json数据相互转换
1.数组转json $json=json_encode(数组名) 数组转json字符串 2,json转数组 $arr=json_decode(json字符串,[true]) 不加true第一次转直接转 ...
- Galera Cluster——一种新型的高一致性MySQL集群架构
原文链接:https://www.sohu.com/a/147032902_505779,最近被分配定位mysql的问题,学习下. 1. 何谓Galera Cluster 何谓Galera Clust ...
- ubuntu 14.04 重装机 安装笔记 无线网卡+cuda+nvidia
1. 安装QA6714 无线网卡重要参考网页 #22 回答 https://bugs.launchpad.net/ubuntu/+source/linux-firmware/+bug/1520343? ...
- 面试知识点准备-C++常见问题
博客园写写格式简单的文章还行,格式一复杂就不行了,可能是我不会用吧,我有强迫症,有道云格式很好用,以后去有道写这种东西了 有道云笔记链接:http://note.youdao.com/noteshar ...