Go开发者的工具箱:gookitgoutil,900+实用函数汇集

Go开发者的工具箱:gookit/goutil,900+实用函数汇集

Go标准库以精简著称,但日常开发中经常缺一些组合操作:数组差集交集、文件快捷读写、带调用栈的错误处理。这些功能标准库不提供,开发者要么自己造轮子,要么引入多个零散依赖。gookit/goutil 把这些操作集中到一个库中,共计 900 多个函数,累积了 2.3k Star。

goutil 覆盖了 Go 开发的常见基础操作,按功能划分为约二十个子包,每个子包独立、零外部依赖,按需导入即可。

变量打印:dump

Go标准库的 fmt.Println 打印嵌套结构体或切片时,输出挤在一行。dump 子包提供了类似 PHP var_dump 的变量打印功能,自动展开嵌套结构、标注类型和长度,同时显示调用位置:

go 复制代码
dump.P(
    23,
    []string{"ab", "cd"},
    map[string]interface{}{
        "key": "val", "sub": map[string]string{"k": "v"},
    },
)

输出按层级缩进,每个元素占据独立一行,嵌套再深也能看清结构。

错误处理:errorx

Go 1.13 引入了 %werrors.Is/As 来做错误包裹与判断。errorx 在此基础上增加了调用栈。用 errorx.New 替代 errors.New,或 errorx.Wrap 包裹已有 error,打印时自动附带从错误创建位置到当前调用链的完整堆栈:

go 复制代码
err := errorx.New("the error message")
fmt.Println(err)
// 输出 error message,同时附带 STACK 调用链

对于多层嵌套调用的项目,比原始 error 多了定位来源的直接信息。

时间处理:timex

timex 是对 time.Time 的增强封装。除了 DateFormat 支持 Y-m-d H:i:s 模板语法,还内置了常用边界方法:DayStart() 获取当天零点、DayEnd() 获取当天最后一刻、NowAddDay() 快速计算偏移日期。时间差的人性化显示也直接提供:

go 复制代码
now := timex.Now()
fmt.Println(now.DayStart())
fmt.Println(now.DateFormat("Y-m-d H:I:S"))

其他子包速览

  • arrutil:数组差集、交集、并集、过滤、映射、去重、随机取值
  • strutil:字符串检查、转换、编码、截取、格式化
  • fsutil:文件读写、目录遍历、路径查找、MIME检测、ZIP解压
  • maputil :深度取值 DeepGet、Map合并、扁平化、与数组互转
  • mathutil:数值范围判断、Min/Max、类型安全转换(Int/Int64/Uint,均带错误返回)
  • jsonutil :JSON编解码、美化输出、带注释JSON的 StripComments
  • cliutil:终端输入读取(含密码输入)、命令行解析、命令执行
  • envutil:环境变量读取、系统类型判断(IsWin/IsMac/IsLinux)、终端色彩支持检测
  • cflag :对 flag.FlagSet 的增强封装,支持快捷参数映射、枚举选项、KV参数

全部子包合计超过 900 个函数,覆盖了 Go 开发中需要反复编写的工具代码。


安装使用

shell 复制代码
go get github.com/gookit/goutil

根包的函数可以直接调用:

go 复制代码
import "github.com/gookit/goutil"

goutil.IsEmpty(nil)      // true
goutil.String(23)        // "23"
goutil.Int("-2")         // 2
goutil.Contains("abc", "a") // true

各子包独立导入,互不耦合,不会引入不需要的代码。


goutil 定位是"Go日常开发的补齐层"。它不是框架,不规定项目结构,每个子包都是独立可用的工具集。对于不想在每个项目中反复实现 ContainsReverseDeepGet 这类函数的 Go 开发者来说,goutil 提供了一个经过验证的集中方案。

相关推荐
DogDaoDao1 小时前
【GitHub】AutoGPT 深度技术解析:开源自主 AI Agent 平台架构全解
人工智能·程序员·开源·github·ai编程·ai agent·智能体
SUNNY_SHUN2 小时前
把 Whisper、Moonshine、SenseVoice 统统装进手机:sherpa-onnx 离线语音部署框架,GitHub 10.9K Star
人工智能·智能手机·whisper·github
DogDaoDao2 小时前
【GitHub】Hermes Agent 深度技术分析
程序员·大模型·github·ai编程·ai agent·智能体·hermers agent
沉默王二3 小时前
阿里云 OCR+LiteParse,让扫描件 PDF 也能被 RAG 检索到!
github·agent·ai编程
X_szxj4 小时前
Windows安装liboqs库
windows·github
AdCj34 小时前
GitHub 日榜速递 (2026-06-08):AI 基础设施正在“下沉“(技术分析版)
人工智能·github·agent
CJH(本人账号)4 小时前
AI Agent 安全危机:当你的“智能助手“变成攻击者的“远程武器“
网络·人工智能·安全·ai·开源·github
独隅4 小时前
Git/GitHub/GitLab/Gitee 核心对比指南
git·gitlab·github
用户074740781654 小时前
web.py:一个简单到极致的 Python Web 框架
github