管道

您所在的位置:网站首页 go语言管道 管道

管道

#管道| 来源: 网络整理| 查看: 265

管道

管道是一个虚拟的方法用来连接 goroutines 和 通道,使一个 goroutine 的输出成为另一个的输入,使用通道传递数据。

使用管道的一个好处是程序中有不变的数据流,因此 goroutine 和 通道不必等所有都就绪才开始执行。另外,因为您不必把所有内容都保存为变量,就节省了变量和内存空间的使用。最后,管道简化了程序设计并提升了维护性。

我们使用 pipeline.go 代码来说明管道的使用。这个程序分六部分来介绍。pipeling.go 程序执行的任务是在给定范围内产生随机数,当任何数字随机出现第二次时就结束。但在终止前,程序将打印第一个随机数出现第二次之前的所有随机数之和。您需要三个函数来连接程序的通道。程序的逻辑在这三个函数中,但数据流在管道的通道内。

这个程序有两个通道。第一个(通道A)用于从第一个函数获取随机数并发送它们到第二个函数。第二个(通道B)被第二个函数用来发送可接受的随机数到第三个函数。第三个函数负责从通道 B 获取数据,并计算结果和展示。

pipeline.go 的第一段代码如下:

package main import ( "fmt" "math/rand" "os" "strconv" "time" ) var CLOSEA = false var DATA = make(map[int]bool)

因为 second() 函数需要通过一种方式告诉 first() 函数关闭第一个通道,所以我使用一个全局变量 CLOSEA 来处理。CLOSEA 变量只在 first() 函数中检查,并只能在 second() 函数中修改。

pipeline.go 的第二段代码如下:

func random(min, max int) int { return rand.Intn(max-min) + min } func first(min, max int, out chan


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3