我们很高兴地宣布 gookit/goutil v0.7.1 正式发布!作为 v0.7.0 系列的第一个补丁版本,本次更新带来了 20+ 新功能、关键错误修复以及多项性能优化,进一步提升了开发体验和工具库的实用性。
Github: https://github.com/gookit/goutil
timex.ToDuration() 方法现在支持负数和复合时间格式-1.5h、2d3h、2hour33min 等多种时间表示方式AnyToStrMap() 函数,实现任意类型到字符串映射的转换L2StrMap 类型,支持二级字符串映射操作Data 类型新增多个实用方法:One()、StrOne()、BoolOne() 等SliceToSMap()、SliceToMap()、SliceToTypeMap()IContainsOne()、IContainsAll()JoinComma()IsVarName() 函数,用于变量名格式验证StrVarRenderer,实现类似 shell 变量渲染器的功能// 支持负数和复合时间格式
duration, err := timex.ToDuration("-1.5h") // -1 小时 30 分钟
duration, err := timex.ToDuration("2d3h") // 2 天 3 小时
duration, err := timex.ToDuration("2hour33min") // 2 小时 33 分钟
// 任意类型到字符串映射的转换
strMap := maputil.AnyToStrMap(someData)
// 多键值获取
value := data.One("key1", "key2", "key3") // 尝试多个键,返回第一个存在的值
// 切片到映射的转换
slice := []string{"a:1", "b:2", "c:3"}
sMap := maputil.SliceToSMap(slice, ":") // {"a": "1", "b": "2", "c": "3"}
// 不区分大小写的包含检查
strutil.IContainsOne("Hello World", []string{"hello", "golang"}) // true
// 快速逗号连接
result := strutil.JoinComma([]string{"a", "b", "c"}) // "a,b,c"
// 变量名验证
isValid := strutil.IsVarName("valid_var123") // true
简单的实现类似 php, kotlin, shell 插值变量渲染,表达式解析处理。
$var_name, ${some_var}, ${top.sub_var}${func_name($var_name, 'const string')}// 使用 StrVarRenderer 进行变量渲染
renderer := textutil.NewStrVarRenderer()
result := renderer.Render("Hello ${name}", map[string]string{"name": "World"}) // "Hello World"
maputil.TryAnyMap 在处理非字符串键映射时的转换错误ParseEnvLines 在某些情况下的解析错误SMap 重命名为 StrMap,提高命名一致性jsonutil 新增 DecodeFile 函数,简化文件读取操作structs、testutil、x/finder 等模块的文档go get github.com/gookit/goutil/v0.7.1
SMap 已重命名为 StrMap,请更新相关代码TryAnyMap 的转换问题,现已修复感谢所有为本次版本做出贡献的开发者!我们欢迎社区反馈和贡献,如果您有任何建议或发现问题,请通过 GitHub Issues 告诉我们。
立即升级体验新特性,享受更高效的 Go 开发体验!