Golang Go语言中有哪些多功能工具库推荐

发布于 1周前 作者 caililin 来自 Go语言

想问一下大佬们,有没有比较好用的 go 的多功能工具库啊?

比方说文件压缩,数组去重?等等各种小工具的合集之类的。

自己写其实都能写出来,不过比如自己想写个小项目,全部手撸还是有些费事。

维护一个自己的工具库也不是不行,不过要是有比较大一点的库,有更多人维护的话,感觉用起来可能问题会更少一点。

java 我知道有个hutool,里面很多小工具,还挺好用的。


Golang Go语言中有哪些多功能工具库推荐

更多关于Golang Go语言中有哪些多功能工具库推荐的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html

8 回复

更多关于Golang Go语言中有哪些多功能工具库推荐的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html


可以试下 github.com/kakuilan/kgo ,目前还只是一个人维护

反射的话,确实还挺方便的,contains 什么的感觉经常用到,大部分时候也不用太考虑性能。多谢呀!

多谢大佬!看了一下还是挺多功能的,我先试一试,有机会我也 pr 一下。

都 go1.18 了,工具库直接用泛型的吧,比如 https://github.com/samber/lo (这个库功能还是蛮全的,虽然些点感觉设计得不好)

作者好强。。。3 月发布的 1.0 ,现在就近 5k star 了,多谢老哥。1.8 的泛型我都还没怎么看,惭愧

Golang 标准库是 Go 语言自带的一组核心功能库,功能全面,易于使用。

在 Golang 标准库的基础上,还可以进一步封装常用的工具函数。本文将介绍一些优秀的开源工具函数库,大家可参考使用。

# samber/lo
stars 13.5k 。

[lo]( https://github.com/samber/lo) 是一个基于 Go 1.18+ 泛型的 Lodash 风格的 Go 库。

该项目最初是作为新泛型实施的实验而开始的。 它在某些方面可能看起来像 Lodash 。 我曾经使用出色的“go-funk”包进行编码,但是“go-funk”使用反射,因此不是类型安全的。

正如预期的那样,基准测试表明泛型比基于“reflect”包的实现快得多。与纯 for 循环相比,基准测试也显示出类似的性能提升。

samber/lo 包含了非常多的方法,主要可以划分为以下几类:

- slice 辅助方法
- map 辅助方法
- tuples 辅助方法
- 多个集合之间计算辅助方法
- 搜索查询辅助方法
- 其他函数式编程辅助方法等

# thoas/go-funk
stars 4.5k 。

[go-funk]( https://github.com/thoas/go-funk) 是一个基于 Reflect 的现代 Go 库。

帮助程序依赖于反射实现泛型,请注意此代码仅在运行时有效,因此您必须拥有良好的测试套件。

这些帮助函数最初是作为学习反射写出来的。它在某些方面可能看起来像 [lodash]( https://github.com/lodash/lodash),但它会有自己的路线图。lodash 是一个很棒的库,背后有很多工作,go-funk 中包含的所有功能都来自内部用例。

您还可以在 [godoc]( https://godoc.org/github.com/thoas/go-funk) 中找到类型安全的实现。

注意,Go 1.18 引入泛型,建议使用泛型而不是反射实现代码复用。

# duke-git/lancet
stars 3k 。

[lancet]( https://github.com/duke-git/lancet) 是 Go 的一个全面、高效、可复用的 util 函数库。 受到 java apache common 包和 lodash.js 的启发。

具有如下特点:

👏 全面、高效、可重用。
💪 600+ go util 函数,支持 string 、slice 、datetime 、net 、crypt…
💅 仅依赖两种库:go 标准库和 golang.org/x
🌍 每个导出函数均有单元测试。

# elliotchance/pie
stars 1.8k 。

[pie]( https://github.com/elliotchance/pie) 是一个实用函数库,用于对切片和映射进行常见操作。

# gookit/goutil

stars 1.7k 。

[goutil]( https://github.com/gookit/goutil) 包含 Go 常用的一些工具函数:数字,字符串,数组,Map ,结构体,反射,文本,文件,错误,时间日期,特殊处理,格式化,常用信息获取等等。

# dablelv/cyan

stars 0.2k 。

[cyan]( https://github.com/dablelv/cyan) 是我自己主导开发的 Go 工具函数库,将项目开发过程中遇到的常用函数记录下来,方便复用,欢迎大家使用共建。

具有如下特点:
- 全面、高效、可重复使用。
- 包含众多实用函数,支持字符串、切片、映射、日期时间、加密…
- 只依赖 Go 标准库和 golang.org/x
- 导出函数的单元测试覆盖率高。

关于名称 cyan ,取自我母亲名字中的“青”字。

在Golang(Go语言)中,存在许多功能强大的工具库,这些库能够帮助开发者更高效地构建和维护项目。以下是一些推荐的多功能工具库:

  1. Gin:轻量级Web框架,提供快速、易于使用的路由、中间件和错误处理功能,非常适合构建Web应用程序。
  2. Echo:另一个快速且高度可定制的Web框架,功能丰富,易于上手。
  3. GORM:强大的对象关系映射(ORM)库,支持多种数据库,如SQLite、SQL Server、MySQL等,方便进行数据操作。
  4. Zap:高性能的日志库,支持多种日志级别和字段结构化,有助于开发者更好地进行日志管理和分析。
  5. GoKit:用于构建分布式应用程序的工具库,提供服务发现、负载均衡等功能,支持微服务的开发。
  6. Viper:配置管理库,支持多种配置格式,如JSON、YAML、TOML等,方便进行配置文件的读取和解析。
  7. Cobra:命令行应用程序开发库,提供简单而强大的API,用于创建命令行应用程序的命令、子命令和标志。
  8. Vegeta:HTTP负载测试工具,以恒定的请求速率构建,专注于提高整体性能并检查程序的脆弱部分。

这些工具库各具特色,涵盖了Web开发、数据库操作、日志管理、微服务支持等多个方面,能够满足不同项目的需求。在选择工具库时,建议根据项目的具体需求和开发者的个人偏好进行选择。

回到顶部