08 | Go编程模式:Pipeline
陈皓
你好,我是陈皓,网名左耳朵耗子。
这节课,我着重介绍一下 Go 编程中的 Pipeline 模式。对于 Pipeline,用过 Unix/Linux 命令行的人都不会陌生,它是一种把各种命令拼接起来完成一个更强功能的技术方法。
现在的流式处理、函数式编程、应用网关对微服务进行简单的 API 编排,其实都是受 Pipeline 这种技术方式的影响。Pipeline 可以很容易地把代码按单一职责的原则拆分成多个高内聚低耦合的小模块,然后轻松地把它们拼装起来,去完成比较复杂的功能。
HTTP 处理
上节课,我们有很多 WithServerHead() 、WithBasicAuth() 、WithDebugLog()这样的小功能代码,在需要实现某个 HTTP API 的时候,我们就可以很轻松地把它们组织起来。
原来的代码是下面这个样子:
通过一个代理函数:
我们就可以移除不断的嵌套,像下面这样使用了:
Channel 管理
当然,如果你要写出一个泛型的 Pipeline 框架并不容易,可以使用Go Generation实现,但是,我们别忘了,Go 语言最具特色的 Go Routine 和 Channel 这两个神器完全可以用来构造这种编程。
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
- 深入了解
- 翻译
- 解释
- 总结
本文介绍了Go编程中的Pipeline模式,该模式可以将代码按照单一职责原则拆分成多个高内聚低耦合的小模块,然后轻松地将它们拼装起来,完成复杂的功能。作者首先介绍了HTTP处理中的Pipeline模式,通过代理函数的使用,简化了代码的嵌套结构。接着,作者讲解了如何利用Go语言中的Go Routine和Channel构建Pipeline模式,以及如何使用代理函数来简化函数嵌套。此外,文章还介绍了Fan In/Out的应用,展示了如何通过并发的方式对一个很长的数组中的质数进行求和运算。通过这些示例,读者可以了解到如何利用Pipeline模式和Go语言的特性来简化代码结构,提高代码的可读性和可维护性。文章内容涵盖了流式处理、函数式编程以及并发相关的技术,对于想要深入了解Go编程模式的读者具有一定的参考价值。
该试读文章来自《Go 语言编程模式实战》,如需阅读全部文章,
请先领取课程
请先领取课程
免费领取
© 版权归极客邦科技所有,未经许可不得传播售卖。 页面已增加防盗追踪,如有侵权极客邦将依法追究其法律责任。
登录 后留言
全部留言(5)
- 最新
- 精选
- neohope第一次调用sum时启动了5个goroutine,然后在merge中等待5个goroutine全部完成。 第二次调用sum就没有用到并发了。而且第二次的goroutine编号,与第一次的没有任何重叠。 虽然是pipeline,其实每次调用都用了不同的goroutine,这和多线程编程是不太一样的。2021-03-1812
- docker131313pipeline由许多命令组合执行呀2024-01-27归属地:北京
- 不能飞的肥燕await是等所有goroute结束再返回,有没有什么方法,我开了多个goroute后,只要一个返回就返回2022-05-031
- py这是把数据加了5遍吗?也没看分段求和啊2022-01-291
- 深度复制merge的代码里 go func() { wg.Wait() close(out) }() 不太理解wg.Wait()在这里要起一个goroutine.2021-02-265
收起评论