05 | Go 编程模式:Map-Reduce
陈皓
你好,我是陈皓,网名左耳朵耗子。
这节课,我们来学习一下函数式编程中非常重要的 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的实现方式,以及如何通过反射机制实现泛型的Map函数。最后,作者总结了Map-Reduce的重要性,强调了它们在业务逻辑和控制逻辑分离解耦的编程模式中的作用。整体而言,本文深入浅出地介绍了Map-Reduce的概念、应用和实现方式,对于想要了解Go编程模式的读者具有一定的参考价值。文章内容涵盖了泛型Map、Reduce和Filter的健壮版实现,以及作者对于反射机制的性能问题和编程模式选择的个人见解。文章内容丰富,适合对Go编程模式感兴趣的读者阅读。
该试读文章来自《Go 语言编程模式实战》,如需阅读全部文章,
请先领取课程
请先领取课程
免费领取
© 版权归极客邦科技所有,未经许可不得传播售卖。 页面已增加防盗追踪,如有侵权极客邦将依法追究其法律责任。
登录 后留言
全部留言(5)
- 最新
- 精选
- davix我对函数式编程的粗浅认识:map-reduce这种还是配合lazy calculation才有意义。2021-05-0313
- neohope5. 统计 30 岁以下员工的薪资总和,后面少了两行吧? fmt.Printf("Younger Total Salary: %d\n", younger_pay) //Younger Total Salary: 190002021-03-113
- 铿然抽象了一些公共部分,有点像函数级模板方法,不过如文中所说,按这个例子,如果需要自己实现,可能更多人更倾向直接for循环。2023-02-22归属地:贵州
- WittEmployeeCountIf 使用 if fn(&list[i]) 而不是 if fn(&employee),这个是出于什么目的呢?2021-08-161
- Mew151健壮版的 Generic Reduce,传进去的pairFunc函数签名只能是这样的吧: func(e1 Employee, e2 Employee) Employee { ... }2021-01-152
收起评论