我们很高兴地宣布 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 开发体验!