English | 中文
gconv 是一个零依赖、轻量级的 Go 工具包,为处理 动态类型 和 接口返回数据类型不固定 的场景提供一套类似 Python 的强力转换能力。
通过 Cast[T] 泛型函数,你可以将任意类型的值转换为指定的类型,极大提升处理外部 API、JSON、Map、动态字段时的开发体验。
- ✔ 支持 Go 泛型 Cast[T]
- ✔ 任意类型 → string / int / float64 / bool
- ✔ 支持 map[string]any / []any
- ✔ 自动处理 json.Number
- ✔ 自动处理数值字符串
- ✔ 支持 struct:使用 JSON 进行自动转换
- ✔ 零第三方依赖,彻底轻量化
- ✔ 对不支持的类型自动返回零值,避免 panic
方式一:使用 go get 安装
go get github.com/cnchef/gconv方式二:将 gconv 文件夹复制到你的项目中
或自定义 module 名:
go mod init gconvpackage main
import (
"fmt"
"gconv"
)
func main() {
var v any = "123"
fmt.Println(gconv.Cast[int](v)) // 123
fmt.Println(gconv.Cast[float64](v)) // 123.0
fmt.Println(gconv.Cast[string](v)) // "123"
fmt.Println(gconv.Cast[bool]("true")) // true
m := map[string]any{"a": 1}
fmt.Println(gconv.Cast[map[string]any](m)) // map[a:1]
}更多示例: 查看 examples/ 目录,包含:
basic.go- 基础使用示例advanced.go- 高级用法(struct 转换、API 响应处理、批量转换等)
Cast[T] 是一个万能转换器,用法简单:
value := Cast[T](v)示例:
age := gconv.Cast[int]("20") // 20
price := gconv.Cast[float64]("99.9") // 99.9
flag := gconv.Cast[bool]("true") // true
name := gconv.Cast[string](123) // "123"精准转换所有基础类型。
自动处理 "123"、123.0、json.Number。
自动支持字符串与数字混合格式。
支持 "true" "1" "false" "0"。
自动强转不正确类型时返回空 map。
自动强转不正确类型时返回空 slice。
gconv/
├── gconv.go # 核心转换函数
├── gconv_test.go # 完整单元测试(覆盖率 98.2%)
├── go.mod # Go 模块定义
├── README.md # 中文文档
├── README_US.md # 英文文档
├── LICENSE # MIT 开源许可
├── CHANGELOG.md # 版本更新记录
├── .gitignore # Git 忽略配置
├── .github/
│ └── workflows/
│ └── test.yml # GitHub Actions CI 配置
└── examples/ # 使用示例
├── basic.go # 基础使用示例
├── advanced.go # 高级使用示例(struct 转换等)
└── go.mod # 示例模块配置
运行单元测试:
go test -v -cover运行性能测试:
go test -bench=. -benchmem当前测试覆盖率:98.2%
欢迎提交 Issue 和 Pull Request!
在提交 PR 前,请确保:
- 所有测试通过
go test ./... - 代码格式化
go fmt ./... - 添加必要的测试用例