- 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)示例对比表,这样你直接就能挑库用了?