内容简介:tees/channels.goteedemo.go程序输出如下
tees/channels.go
package tees type TeeOp struct { } func NewTeeOp() *TeeOp { teeOp := &TeeOp{} return teeOp } func (teeOp *TeeOp) OrDone( done, c <-chan interface{}, ) <-chan interface{} { valStream := make(chan interface{}) go func() { defer close(valStream) for { select { case <-done: return case v, ok := <-c: if ok == false { return } select { case valStream <- v: case <-done: } } } }() return valStream } func (teeOp *TeeOp) Tee( done <-chan interface{}, in <-chan interface{}, ) (_, _ <-chan interface{}) { out1 := make(chan interface{}) out2 := make(chan interface{}) go func() { defer close(out1) defer close(out2) for val := range teeOp.OrDone(done, in) { var out1, out2 = out1, out2 for i := 0; i < 2; i++ { select { case <-done: case out1 <- val: out1 = nil case out2 <- val: out2 = nil } } } }() return out1, out2 } func (teeOp *TeeOp) Repeat( done <-chan interface{}, args ...interface{}, ) <-chan interface{} { valueStream := make(chan interface{}) go func() { defer close(valueStream) for { for _, v := range args { select { case <-done: return case valueStream <- v: } } } }() return valueStream } func (teeOp *TeeOp) Take( done <-chan interface{}, valueStream <-chan interface{}, num int, ) <-chan interface{} { takeStream := make(chan interface{}) go func() { defer close(takeStream) for i := 0; i < num; i++ { select { case <-done: return case takeStream <- <-valueStream: } } }() return takeStream }
teedemo.go
package main import ( "fmt" "teedemo/tees" ) func main() { teeOp := tees.NewTeeOp() done := make(chan interface{}) defer close(done) out1, out2 := teeOp.Tee(done, teeOp.Take(done, teeOp.Repeat(done, 1, 2, 3), 6)) for val1 := range out1 { fmt.Printf("out1: %v, out2: %v \n", val1, <-out2) } }
程序输出如下
image.png
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网
猜你喜欢:- 硬件产品增量分拆于规模化敏捷Scrum研发中
- 如何在Hibernate/JPA中配置具有两个连接池的两个数据源
- 如何合并两个 TensorFlow 模型
- 关于sqlmap的两个小坑
- JS计算两个时间间隔
- 昨天 GitHub 挂了两个小时
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
个性化网页设计与鉴赏
梁景红 / 西安电子科技大学出版社 / 2003-07-14 / 22.00
本书比较全面地介绍了网页设计应注意的相关问题, 在网页设计基础方面着重讲解了网页框架、页面元素、色彩设计,分析了一些人们容易忽视的细小环节,如页面装饰物、图片、文字、连接等。书中结合实例分析了优秀网页的设计创意思想,可以给读者提供一些启示。书中还介绍了作为网页设计者需要了解的信息管理和技术应用,以及网站VI设计和视觉美学等必要知识,读者可针对各种类别的站点具体实践这些知识,寻找进行网页设计的切入点......一起来看看 《个性化网页设计与鉴赏》 这本书的介绍吧!