基于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)删除。
用户投稿
上一篇 2022年6月16日 06:04
下一篇 2022年6月16日 06:04

相关推荐

  • 30个无加盟费的项目(茶颜悦色奶茶店加盟费多少)

    茶颜悦色又爆了,8月18日,茶颜悦色南京门店正式开业,开张不到半小时,门店就人满为患,消费者的购买热情十分高涨,而由于人流量过大造成拥堵,茶颜悦色也不得不暂停营业。 当然,这里面排…

    2022年11月27日
  • 存储过程语法(sql server存储过程语法)

    今天小编给各位分享存储过程语法的知识,其中也会对sql server存储过程语法进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧! oracle存储过程基本语法…

    2022年11月26日
  • 净利润率越高越好吗(净利润率多少合适)

    一、持续增收不增利,平均净利润率首次跌入个位数 2021年,增收不增利依旧是行业主流。具体来看,大部分企业营业收入呈增长态势,E50企业平均同比增速达到17.3%,但是利润增速则明…

    2022年11月26日
  • 网游小说大全(网游小说大全完本书)

    今天小编给各位分享网游小说大全的知识,其中也会对网游小说大全完本书进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧! 有什么好看的网游小说 跳舞 —…

    2022年11月26日
  • 好看的黑道小说(2023好看的黑道小说)

    本文主要讲的是好看的黑道小说,以及和2021好看的黑道小说相关的知识,如果觉得本文对您有所帮助,不要忘了将本文分享给朋友。 有什么好看的黑道小说 著作权归作者所有。 商业转载请联系…

    2022年11月26日
  • 规范透明促PPP高质量发展——16万亿元大市场迎来新规

    近日,财政部印发《关于进一步推动政府和社会资本合作(PPP)规范发展、阳光运行的通知》,从做好项目前期论证、推动项目规范运作、严防隐性债务风险、保障项目阳光运行四个方面进一步规范P…

    2022年11月25日
  • 推荐3种白手起家的赚钱项目(白手起家赚钱项目有哪些)

    如今社会压力非常的大,家有老少要养活,这些都加速了穷人想要创业的欲望,但是创业路总是那么的艰难,资金就是创业的重头戏,所以选择一个低成本又赚钱的项目是大多数人最期望的了,那么有哪些…

    2022年11月25日
  • 《原神》3.2无相交响诗第一天无相之冰怎么打?无相交响诗攻略

    原神3.2无相交响诗第一天无相之冰怎么打?最近新版本3.2版本的无相交响诗活动又开启了,不少玩家还不清楚具体的玩法,下面一起来看一下原神被隐去的原神3.2无相交响诗第一天无相之冰打…

    2022年11月24日
  • 闲鱼运营的4大技巧解析(闲鱼运营怎么做)

    熟悉我又来了,上一次写的文章是爆出风水项目的潜规则,但那个项目已经凉凉了。 这一次我是要教一些小白,你们第一次做互联网的建议做的项目之一,这个项目就是闲鱼卖二手物品赚差价了!!! …

    2022年11月24日
  • 《原神》画外旅照青植之篇第七天怎么过?画外旅照第七天玩法介绍

    原神的画外旅照任务需要玩家达成一定的要求进行拍照,完成任务可以获得奖励。很多玩家想知道原神画外旅照青植之篇第七天怎么过,下面就带来原神画外旅照第七天玩法介绍,感兴趣的小伙伴不要错过…

    2022年11月23日

联系我们

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