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

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

zonemu12小时前技术文章2

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

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

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

相关文章

一套智能停车场收费管理系统设计方案,拓扑图VISIO格式

大家好,我是薛哥。最近VIP会员群的读者咨询停车场管理系统的规划设计方案,今天分享一个模板素材,主要里面的拓扑图可以编辑的,VISIO格式,建议收藏备用。此套完整的Word方案,VIP会员下载!智能停...

Excel VBA 主界面/一步一步带你设计【收费管理系统】02

本文于2023年5月14日首发于本人同名公众号,更多文章案例请关注微信公众号:Excel活学活用!☆本期内容概要☆用户窗体设置:主界面、主页设计上期我们分享了EXCEL读取ACCESS数据库表,实现系...

细数5款国外热门Linux发行版(linux发行版排名网站)

Linux系统已经与我们的生活息息相关,当你用Android手机浏览这篇文章时,你就已经在使用Linux系统。当然作为编程开发最热门的系统,他还有很多专注于开发使用的版本。Fedora热门入门推荐,一...

据说是可以替代 Windows 的 5个 Linux 发行版

现如今有数以千计的 Linux 发行版可供您使用,然而人们却无法选择一个完美的操作系统来替代 Windows。 使用 Windows 时,傻瓜都能操作自如,同样的方法却不适用于 Linux。在这里,您...

Garuda Linux:现代化、注重性能与美观的Linux发行版

什么是 Garuda Linux?Garuda Linux 是一个基于 Arch Linux 的现代化、注重性能与美观的桌面操作系统。它面向对性能有较高要求的用户,尤其受到 Linux 爱好者、游戏玩...

Vue3 如何实现父子组件传值?(vue父子组件传值props)

在Vue 3中,要实现父子组件传值效果主要通过props和emit两种机制来实现,下面我们就来详细介绍一下这两种机制。父组件向子组件传值propsprops是Vue组件的一种机制,主要的作用就是实现从...