gookit/goutil v0.7.0 新版本发布:模块调整与功能增强

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 格式解析。
  • 测试工具增强 :新增 MockHttpServerFileExists 等断言工具,覆盖率提升。
  • 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 参与贡献!

相关推荐
一只大侠的侠11 分钟前
Flutter开源鸿蒙跨平台训练营 Day7Flutter+ArkTS双方案实现轮播图+搜索框+导航组件
flutter·开源·harmonyos
聆风吟º12 分钟前
CANN开源项目实战指南:使用oam-tools构建自动化故障诊断与运维可观测性体系
运维·开源·自动化·cann
xuhe21 小时前
[全流程详细教程]Docker部署ClawBot, 使用GLM4.7, 接入TG Bot实现私人助理. 解决Docker Openclaw Permission Denied问题
linux·docker·ai·github·tldr
一只大侠的侠1 小时前
Flutter开源鸿蒙跨平台训练营 Day9分类数据的获取与渲染实现
flutter·开源·harmonyos
一只大侠的侠1 小时前
Flutter开源鸿蒙跨平台训练营 Day 5Flutter开发鸿蒙电商应用
flutter·开源·harmonyos
宇宙帅猴1 小时前
GitHub 私有仓库认证完整指南:告别密码错误,使用 PAT 令牌
github
一只大侠的侠3 小时前
Flutter开源鸿蒙跨平台训练营 Day6ArkUI框架实战
flutter·开源·harmonyos
AllData公司负责人3 小时前
AllData数据中台-数据同步平台【Seatunnel-Web】整库同步MySQL同步Doris能力演示
大数据·数据库·mysql·开源
一只大侠的侠4 小时前
Flutter开源鸿蒙跨平台训练营 Day 4实现流畅的下拉刷新与上拉加载效果
flutter·开源·harmonyos
2501_943695334 小时前
高职大数据技术专业,怎么参与开源数据分析项目积累经验?
大数据·数据分析·开源