分享
这是一个创建于 的主题,其中的信息可能已经有所发展或是发生改变。
gookit/goutil v0.7.0 新版本发布:模块调整与功能增强!这是自 v0.6.x 以来的首个大版本更新,包含 **模块架构调整、30+ 新功能、性能优化及 20+ 错误修复**。本文将为您详解本次升级的核心亮点。
> Github: [https://github.com/gookit/goutil](https://github.com/gookit/goutil)
---
## 🚀 版本核心亮点
### 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](https://github.com/gookit/goutil/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` 单元测试稳定性
---
## 📈 社区与贡献
本版本由 **12 位贡献者** 共同完成,提交 43 次代码,修复了包括 Windows 终端兼容性在内的多项社区反馈问题。感谢 [@contributor1](https://github.com/contributor1) 等伙伴的支持!
---
## 📚 资源链接
- 📄 [完整变更日志](https://github.com/gookit/goutil/compare/v0.6.18...v0.7.0)
- 📦 [安装指南](https://pkg.go.dev/github.com/gookit/goutil)
- 🐛 [Issue 反馈](https://github.com/gookit/goutil/issues)
立即升级体验新特性,欢迎通过 [GitHub](https://github.com/gookit/goutil) 参与贡献!
有疑问加站长微信联系(非本文作者)
入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889
关注微信890 次点击 ∙ 1 赞
添加一条新回复
(您需要 后才能回复 没有账号 ?)
- 请尽量让自己的回复能够对别人有帮助
- 支持 Markdown 格式, **粗体**、~~删除线~~、
`单行代码` - 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
- 图片支持拖拽、截图粘贴等方式上传