当前位置:首页 > 技术文章 > 正文内容

基于 Go 泛型实现的工具库推荐(go2 泛型)

zonemu3个月前 (07-10)技术文章48

大家好,又见面了,我是 GitHub 精选君!

今天要给大家推荐一个 GitHub 开源项目 samber/lo,该项目在 GitHub 有超过 9.5k Star,用一句话介绍该项目就是:“ A Lodash-style Go library based on Go 1.18+ Generics (map, filter, contains, find...)”,基于泛型实现新的基础数据结构操作,使得代码更简洁易懂。

对应的压力测试证实了,使用该项目的泛型实现是要比使用 reflect 的包实现性能要好的,同时对于使用项目中的代码来替代直接使用 for 循环的代码来说,也同样有性能上的提升,原理也很容易理解因为在执行上做了并行的优化。

我们来看一下以下的一个简单示例,计算数组中不重复出现的值:

import (
    "github.com/samber/lo"
    lop "github.com/samber/lo/parallel"
)

names := lo.Uniq[string]([]string{"Samuel", "John", "Samuel"})
// []string{"Samuel", "John"}

以上也可以直接使用 lo.Uniq([]string{...}) 的方式,因为编译器有默认的类型推导。

目前该项目对 slice、map 等实现了非常多的易用函数,对于开发者来说能够更便捷的编写代码。

不妨再多看几个例子:

1、使用 Filter 进行数组过滤

2、Reduce 操作

3、GroupBy 操作

以上代码是不是很简洁同时很容易理解?如果你使用 Go 开发,非常推荐你使用该工具库。更多项目详情请查看如下链接。

开源项目地址:https://github.com/samber/lo (文末可点击阅读原文)

开源项目作者:lo

以下是参与该项目的其他贡献人员列表:

关注我们,一起探索有意思的开源项目。

相关文章

2020年最漂亮的7个Linux发行版(最受欢迎的linux发行版)

请关注本头条号,每天坚持更新原创干货技术文章。如需学习视频,请在微信搜索公众号“智传网优”直接开始自助视频学习1. 前言对于想学习Linux的朋友们,心中一定有疑问,哪个Linux版本比较好入门,Li...

vue3-内置组件-Teleport(vue内置指令有哪些)

Teleport<Teleport> 是一个内置组件,它可以将一个组件内部的一部分模板“传送”到该组件的 DOM 结构外层的位置去。基本用法有时我们可能会遇到这样的场景:一个组件模板的一部...

程序员项目经理如何调动组员积极性

#这个方法应该很适合程序员都说程序员是比较傲娇,有点小自负(有的是相当,那不叫自负,那是实力的体现好吗),略微呆萌,自尊心偏小强的一类族群。是吗?中招了吗?作为管理好几个组员,要完成一个大项目的项目经...

jenkins2.107+tomcat8+jdk1.8的安装和发布代码3种方式

jenkins2.107+tomcat8+jdk1.8的安装和发布代码3种方式如果对运维课程感兴趣,可以在b站上或csdn上搜索我的账号: 运维实战课程,可以关注我,学习更多免费的运维实战技术视频1....

HTML5最新版本介绍(“html5”)

HTML5是HTML4.01和XHTML1.0之后超文本标记语言的最新版本,由一群自由思想者设计,最终实现了多媒体支持、交互性、更智能的表单和更好的语义标注。 HTML 5不只是 HTML规范的最新...

使用HTML5+JS实现文字转语音(h5 文字转语音)

使用HTML5+JS实现文字转语音现在越来越多的视频采用了AI语音,下面给大家介绍几种简单的文字转语音的办法,完全免费的欧。使用HTML5语音合成API-SpeechSynthesis实现的文字转语音...