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

大家好,又见面了,我是 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

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

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


更多精彩请扫码关注如下公众号。

Written on February 13, 2023