基于Go 1.18+泛型、Lodash风格的Go语言库,支持切片和map等助手

基于Go 1.18+泛型、Lodash风格的Go语言库,支持切片和map等助手

samber/lo是基于Go 1.18+泛型的、Lodash风格的Go语言库。Lodash则是一个一致性、模块化、高性能的JavaScript实用工具库,用于提升开发者效率,提高原生JavaScript方法的性能,在业界赫赫有名。

lo项目开始时作为一个有新泛型实现的实验,在某些方面可能看起来像Lodash。作者曾使用go-funk包进行编码,但go-funk使用反射(reflection),因此不是类型安全的。

该项目已经在GitHub上积累了6.1k的Star。

  • 项目地址:https://github.com/samber/lo
  • 开源协议:MIT License

项目作者Samuel Berthe来自法国西部城市南特,从事产品型用户研究。

正如预期,基准测试表明,泛型将比基于反射包的实现快得多。并且,与纯for循环相比,基准测试也显示出类似的性能提升。

未来,5至10个助手将与进入Go标准库的助手重叠(在包名称slices和maps下)。作者认为Io库是合理的,提供了更多有价值的抽象。

安装

go get github.com/samber/lo@v1

使用

使用如下命令导入lo:

import ( “github.com/samber/lo” lop “github.com/samber/lo/parallel”)

接着使用如下其中一个助手:

names := lo.Uniq[string]([]string{“Samuel”, “Marc”, “Samuel”})// []string{“Samuel”, “Marc”}

大多数时候,编译器将可以推断出类型,这样你就能够调用lo.Uniq([]string{…})。

支持的各类助手(helper)

Slices助手

maps助手

math助手

strings助手

tuples助手

intersection助手

具体展示

Map

操作一种类型的切片,并将它转换为另一种类型的切片:

import “github.com/samber/lo”lo.Map[int64, string]([]int64{1, 2, 3, 4}, func(x int64, _ int) string { return strconv.FormatInt(x, 10)})// []string{“1”, “2”, “3”, “4”}

并行处理:像lo.Map()一样。但mapper函数在协程(goroutine)中被调用,并以相同的顺序返回结果。

import lop “github.com/samber/lo/parallel”lop.Map[int64, string]([]int64{1, 2, 3, 4}, func(x int64, _ int) string { return strconv.FormatInt(x, 10)})// []string{“1”, “2”, “3”, “4”}

Filter

遍历一个集合,并返回predicate函数返回true的所有元素的一个数组。

even := lo.Filter[int]([]int{1, 2, 3, 4}, func(x int, _ int) bool { return x%2 == 0})// []int{2, 4}

Contains

如果一个元素出现在集合中,则返回true。

present := lo.Contains[int]([]int{0, 1, 2, 3, 4, 5}, 5)// true

更多其他细节内容请参阅原项目。

郑重声明:本文内容及图片均整理自互联网,不代表本站立场,版权归原作者所有,如有侵权请联系管理员(admin#wlmqw.com)删除。
(0)
用户投稿
上一篇 2022年6月16日
下一篇 2022年6月16日

相关推荐

  • Three.js入门 第三章 用webpack+ts 开发three 项目

    我们之前说webgl的时候,是以夯实基础为目的。 而现在的three,我会逐步往实战靠拢。 现在,webpack 依旧是主流的模块打包工具,这在大部分公司的项目开发中是必不可少的。…

    2022年6月13日
  • 北汽蓝谷与华为合作研发制造新能源汽车

    [财联社早知道]北汽蓝谷与华为合作研发制造新能源汽车后,又加快进入华为销售渠道合作事宜,北汽集团已成为这家动力控制系统公司第三大客户 财联社早知道 2022.06.20 20:51…

    2022年6月22日
  • 初中数学不好怎么办?

    数学的学习,要说难,应该从来都不易。一般不会出现,初二数学突然很难学的情况。 初二了,为什么会觉得数学难?因为之前的数学成绩也不好,基础没有打好,到了初二了,就觉得更加吃力。当然,…

    2022年4月19日
  • 1=2?看我七十二变

    一件项链能变成两件?你相信吗? 这样的一款蜜蜡桶珠项链,绝对的女王范,气场强大!一眼沦陷! 可是,能有同款手串搭配就更完美! 这串项链上每一颗蜜蜡桶珠都是那么让人着迷,就是要同款,…

    2022年5月17日
  • 煤航两项目入选工信部2021年物联网示范项目名单

    【来源:陕西省科学技术厅_基层科技】 近日,工信部发布2021年物联网示范项目名单,中煤航测遥感集团“基于物联网+大数据的油气管网全生命周期智慧管控应用系统”“煤层自燃监测物联网平…

    2022年7月19日
  • 地产营销的4大变革解析(地产营销怎么做)

    2020年底,中指院研究报告《“十四五”住房需求空间有多大》预计,2021-2025年改善型住房需求大涨,将成为商品化住宅需求的关键支撑。 在改善为主的市场大环境下,大部分人不是买…

    2022年11月17日
  • 原神:盘点性价比最高的四星长柄、双手剑武器排行

    哈喽,大家好。 上一期我们讲了四星武器中的单手剑,那么这一期我们就来盘点一下原神中有哪些四星长柄类武器和双手剑武器性价比最高,实用性最强!好了,话不多说请看下方。 渔获 渔获又叫鱼…

    2022年8月7日
  • 介绍2019挣钱的3大项目(2019挣钱的项目有哪些)

    本人从事16年的互联网工作,从最初的网赚,到更多的上当受骗,导致了越来越多的人对虚拟项目的抵触。但无论真真假假,我搜集了大量的市场资料,感觉还是以实体的项目最为靠谱。 最近,发现郭…

    2022年10月21日
  • 苏提达王后一改端庄保守路线,穿起清凉装,让人想起西拉米王妃

    苏提达王后是泰国的第一夫人,雍容华贵,母仪天下。苏提达王后端庄美丽,温柔贤德,因为“天生丽质难自弃”,才会“一朝选在君王侧”。 至今苏提达王后当上泰国王后已经有三年多了,一直是拉玛…

    2022年6月9日
  • Python 大家都该知道的高阶函数

    函数式编程现在逐渐被广大开发群体接受,越来越多的开发者们开始使用这种优雅的开发模式,而我们使用函数式编程最主要的是需要清楚: 什么是高阶函数(Higher-order Functi…

    2022年6月27日

联系我们

联系邮箱:admin#wlmqw.com
工作时间:周一至周五,10:30-18:30,节假日休息