基于Go1。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
更多其他细节内容请参阅原项目。
停不下的火车一丢掉远去的云朵掏空口袋装进寒风温暖自己耳边的火车呼啸了好一阵子才安静下来,但耳边似乎还有轰鸣的感觉,让我的心随火车一起远去学校的东边有一条铁路经过,校门前的街道从铁路下穿过,我没
美国探月火箭再不发射,卫星的电池就要耗光了极目新闻记者宋清影据独立报8月31日报道,美国新一代登月火箭太空发射系统(SLS)发射因引擎故障一推再推,发射团队担心不已再不发射,火箭上卫星的电池就要耗光了。美国探月火箭发射推迟
一个人今生最大的修行,爱自己的32个小习惯头条创作挑战赛为自己而活,不在乎世俗的眼光选择让自己舒服自由的方式生活,不勉强,委屈自己了解自己,直面自己的缺点,发扬优点善待自己的身体,珍爱健康珍惜自己的情感,宁缺毋滥饭要慢慢吃
实现行业领先我国新能源汽车用高等级材料获突破央视网消息8月31日,由我国自主研发建设的高等级无取向电工钢生产线在河北迁安投产,新材料将大幅提升新能源汽车电机功率密度和电机效率。这条生产线投产的两款新能源汽车用电工钢产品,作为
秋季之后,少吃猪肉多吃这菜,简单易学,营养又开胃,总吃不腻夏天结束了,我们迎来凉爽的秋季,今年的夏天非常难熬,高温持续几个月,终于可以出门了,最近下了几天的秋雨,让温度降下来,温度只有二十几度,都开始穿长袖,感受到一丝丝的凉意。秋季之后,
汇丰晋信基金吴培文基于经典价值策略,打造简明易用的投资方案吴培文汇丰晋信基金经理可解释可复制可预期(三可)是汇丰晋信主动权益管理理念的一大特色。我们以客户需求为引领,基于经典价值策略,计划打造一系列符合三可的投资方案。争取做到既简明易懂,
茶香,灿烂了阳光把红叶轻轻捧起将这摇醒了一个季节的精灵珍藏把秋味泡成酽酽的浓茶将这清香缱绻的日子品尝散开心头的几多思绪消去人间的几多纷扰让秋阳明媚成一颗颗谷粒让岁月流芳成一枚枚红枣把窗棂上的辣椒辫
清纯靓丽,个个爱头条作者云开日初世界很精彩,我们很喜欢世界真丰富,我们很热爱人间的美啊,我们很爱看谁不喜欢美,我们很爱美美景美花美人,好看喜欢世界很精彩,人间也可爱我们喜欢美好热爱每一天头条作者云
放下执念,便是重生尘世絮语太阳虽然看起来还是一如往常的耀眼,让人不敢直视,但吹过的风,却是凉凉的。立秋之后,下了几场雨,气温慢慢的降下来,天,也逐渐的变凉了。东北的天儿,热的慢,但却凉的很快,立秋后
为何能带回月球土壤,火星样本却不行?科学家后果人类无法承受前言虽然人类对于宇宙的研究可谓是雨露均沾,各个方面都有涉猎。但对于天体的探测,最主要的目标还是放在了月球和火星之上。目前的月球已经被认定为没有生命的天体,但这并不妨碍人类利用这一距
土星最大的卫星,有望成为第二个地球人类的第二个家园人类在地球上生活了百万年时间,虽然也曾经遭受过大自然无情地伤害,但总体来说,地球的环境近乎完美,人类很难再找到像地球这样适宜生存的星球。虽然如此,人类必须未雨绸缪,因为我们不知道什