- Published on
golang用于数据类型转换的三方库有哪些
- Authors

- Name
- 刘十三
ChatGPT:
在 Go 里做数据类型转换时,标准库本身已经提供了不少工具(strconv、encoding/json、fmt.Sscanf、reflect 等),但如果你想用三方库来简化或者增强类型转换,社区也有一些成熟方案。常见的 Go 第三方库有:
🔹 常用三方库
- ⭐ 非常流行,常用于配置解析(如 Viper)
- 功能:提供
ToInt、ToString、ToBool、ToTime等简洁函数 - 特点:简单直接,处理常见类型转换时足够好用
import "github.com/spf13/cast" i := cast.ToInt("123") // 123 s := cast.ToString(123) // "123" b := cast.ToBool("true") // true
- ⭐ 常用于将
map[string]interface{}转换为 struct - 功能:支持标签(
mapstructure:"field_name"),复杂嵌套解析 - 特点:和 JSON/配置解析结合使用场景多
import "github.com/mitchellh/mapstructure" type Person struct { Name string Age int } var m = map[string]interface{}{ "Name": "Tom", "Age": 30, } var p Person _ = mapstructure.Decode(m, &p)- ⭐ 常用于将
- ⭐ 常用于 struct ↔ struct 的字段复制和转换
- 功能:自动匹配相同字段名,支持 tag 定义
- 特点:比反射手写安全和方便,适合 DTO ↔ Entity 转换
import "github.com/jinzhu/copier" type User struct { Name string Age int } type UserDTO struct { Name string Age int } var u = User{Name: "Tom", Age: 20} var dto UserDTO _ = copier.Copy(&dto, &u)
- ⭐ 更偏向于 struct/map 合并,但也能做默认值填充、数据类型兼容处理
- 特点:配置合并、默认值注入时非常常用
import "github.com/imdario/mergo" type Config struct { Port int } defaultCfg := Config{Port: 8080} customCfg := Config{} _ = mergo.Merge(&customCfg, defaultCfg) // customCfg.Port = 8080
- ⭐ 专门处理数据库里的 NULL 值与 Go 类型的转换
- 功能:封装
sql.NullString/sql.NullInt64等,转 JSON 时更友好
go-playground/validator(间接类型处理)- ⭐ 虽然主要做数据校验,但在 struct ↔ 基础类型映射中也常用
- 场景:表单解析后先用
mapstructure/json转换,再用 validator 校验
👉 总结:
- 简单类型转换 →
spf13/cast - map ↔ struct 转换 →
mapstructure - struct ↔ struct 拷贝 →
copier - 配置合并/默认值填充 →
mergo - 数据库 NULL 处理 →
guregu/null
要不要我帮你整理一个 常用类型转换场景(string ↔ int, map ↔ struct, struct ↔ struct)示例对比表,这样你直接就能挑库用了?