gookit/goutil
Go 常用功能的扩展工具库。包含:数字,字符串,slice/数组,Map,结构体,反射,文本,文件,错误,时间日期,测试,CLI,命令运行,系统信息,格式化,常用信息获取等等。
Github: github.com/gookit/gout...
gookit/goutil v0.7.0 新版本发布:模块调整与功能增强!这是自 v0.6.x 以来的首个大版本更新,包含 模块架构调整、30+ 新功能、性能优化及 20+ 错误修复。本文将为您详解本次升级的核心亮点。
🚀 版本核心亮点
1️⃣ 模块化重构,代码结构更清晰
- 一些子包调整 :将不常用 的
clipboard
,fakeobj
,encodes
,stdio
,fmtutil
,goinfo
等工具包迁移至x/
子目录(如goutil/x/clipboard
),提升模块独立性。 - 依赖精简 :移除对
xo/terminfo
的依赖,集成简单的x/ccolor
替代原gookit/color
,去除了所有外部依赖。 - 语义化版本升级:本次重构涉及包路径变更,遵循 Semver 规范,建议升级前检查导入路径。
2️⃣ 新增开发者友好功能
- 并发文件查找 :
x/finder
(原fsutil/finder
) 支持并发模式,大目录遍历效率提升 3-5 倍。 - 新增工具函数扩展 :
strutil.IsInt()
/IsFloat()
/IsHttpURL()
:常见格式校验一键完成。arrutil.FirstOr()
:空值默认返回,简化切片处理逻辑。- envutil:
LoadText()
/MustGet()
/GetOne()
/OnExist
:环境变量加载,读取。 - cliutil:
ShellQuote()
- reflets:
ToTimeOrDuration()
textutil.ParseSimpleINI()
:内置轻量 INI 格式解析。
- 测试工具增强 :新增
MockHttpServer
、FileExists
等断言工具,覆盖率提升。 structs.InitDefaults()
/BindData()
支持解析 date, duration 字符串格式并设置值- 新增
x/ccolor
支持简单的命令行颜色打印输出
3️⃣ 性能与兼容性优化
- 变量打印
dump
支持设置打印slice/array 的最大长度 - 终端色彩支持改进 :
x/termenv
提供更精准的颜色级别检测(TrueColor/256/16色),兼容 macOS/iTerm2/Windows Terminal。 - HTTP 响应缓存优化 :
httpreq.RespX
缓存响应体,支持多次读取,降低内存分配。 - 跨平台 CI 增强:新增 Go 1.21+ 支持,修复 Ubuntu/macOS/Windows 下的测试兼容性问题。
🛠️ 重点变更日志
完整的变更信息请查看 📄 compare/v0.6.18...v0.7.0
🔧 功能新增(Feature)
子模块 | 新增内容 |
---|---|
fsutil |
PathNoExt() 提取无扩展名路径,Finder 并发查找 |
strutil |
IsInt() / IsHttpURL() 等校验函数,Md5Base62() 编码 |
x/ccolor |
ANSI 色彩渲染支持,替代第三方库 |
x/termenv |
提供精准的终端颜色级别检测(TrueColor/256/16色),替代第三方库 |
testutil |
MockHttpServer 模拟服务端测试,RunOnCleanEnv 环境隔离 |
🧹 重构与优化(Refactor/Update)
变更点 | 说明 |
---|---|
包路径迁移 | stdio / clipboard 等迁移至 x/ 目录,减少根目录臃肿 |
依赖管理 | 升级 golang.org/x/term 至 v0.30.0,去除了三方库依赖 |
文档与测试增强 | 自动生成 README,新增 500+ 单元测试用例,覆盖 cflag / timex 等模块 |
🐞 修复问题(Fixed)
- 修复
Finder
重复执行时的协程泄露问题 - 解决
termenv
在 Linux 环境下颜色检测失败的边界条件 - 优化
DetectColorLevel
单元测试稳定性
📚 资源链接
立即升级体验新特性,欢迎通过 GitHub 参与贡献!