111 | Go编程模式:Map-Reduce
陈皓
该思维导图由 AI 生成,仅供参考
你好,我是陈皓,网名左耳朵耗子。
这节课,我们来学习一下函数式编程中非常重要的 Map、Reduce、Filter 这三种操作。这三种操作可以让我们轻松灵活地进行一些数据处理,毕竟,我们的程序大多数情况下都在倒腾数据。尤其是对于一些需要统计的业务场景来说,Map、Reduce、Filter 是非常通用的玩法。
话不多说,我们先来看几个例子。
基本示例
Map 示例
在下面的程序代码中,我写了两个 Map 函数,这两个函数需要两个参数:
一个是字符串数组 [] string,说明需要处理的数据是一个字符串;
另一个是一个函数 func(s string) string 或 func(s string) int。
整个 Map 函数的运行逻辑都很相似,函数体都是在遍历第一个参数的数组,然后,调用第二个参数的函数,把它的值组合成另一个数组返回。
因此,我们就可以这样使用这两个函数:
可以看到,我们给第一个 MapStrToStr() 传了功能为“转大写”的函数,于是出来的数组就成了全大写的,给MapStrToInt() 传的是计算长度,所以出来的数组是每个字符串的长度。
我们再来看一下 Reduce 和 Filter 的函数是什么样的。
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
- 深入了解
- 翻译
- 解释
- 总结
本文介绍了Go编程模式中的Map-Reduce,以及其在函数式编程中的重要性。作者首先介绍了Map、Reduce、Filter这三种操作的基本示例,通过示例代码展示了它们的使用方法和作用。接着,作者给出了一些业务示例,展示了这些操作在实际业务场景中的应用。特别是针对员工信息的统计示例,更加直观地展示了Map、Reduce、Filter的实际应用。此外,文章还介绍了泛型Map-Reduce的实现,虽然Go语言目前不支持泛型,但作者通过使用`interface{}`和`reflect`来实现了一个简单的泛型Map函数。最后,作者提醒读者反射是运行时的事,如果类型出问题就会有运行时的错误。整体来说,本文通过丰富的示例和详细的解释,帮助读者了解了Map-Reduce的基本概念和在Go语言中的应用,同时也展示了泛型Map-Reduce的实现方式。文章内容丰富,适合对Go语言编程感兴趣的读者阅读。文章中还介绍了健壮版的Generic Map、Reduce和Filter的代码实现,展示了对泛型的处理方式,同时也指出了使用反射会导致性能问题。总的来说,本文对Go语言中Map-Reduce的应用和泛型处理进行了详细介绍,对于想要深入了解Go语言编程模式的读者具有一定的参考价值。
仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《左耳听风》,新⼈⾸单¥98
《左耳听风》,新⼈⾸单¥98
立即购买
© 版权归极客邦科技所有,未经许可不得传播售卖。 页面已增加防盗追踪,如有侵权极客邦将依法追究其法律责任。
登录 后留言
全部留言(4)
- 最新
- 精选
- 北国骑士所以我觉得用go写业务逻辑真的是件很sb的事情2021-04-16111
- 拉欧就是因为go最初不支持泛型,所以每个go框架都要搞一堆的代码生成器来生成重复代码,恶心的不要不要的2022-04-3012
- 萧通俗易懂2021-02-181
- RefrainverifyFuncSignature(fn, elemType, nil) 为什么要传一个空值呢? outType := types[len(types)-1] 这个地方outType必然是空值2021-02-051
收起评论