当前位置: 首页 > news >正文

goframe gconv哪些类型可转

GoFrame 的 gconv 模块支持非常丰富的类型转换几乎覆盖了 Go 开发中常见的所有场景。以下是主要可转换的类型分类---一、基础类型互转类型 说明string ↔ int/uint 含 int8/16/32/64, uint8/16/32/64string ↔ float32/float64 支持科学计数法string ↔ bool true/1/on/yes → truestring ↔ []byte 字节数组与字符串互转string ↔ rune Unicode 码点数字类型之间互转 int ↔ float64 等可能丢失精度---二、时间类型类型 说明string ↔ time.Time 自动识别多种时间格式int64 ↔ time.Time Unix 时间戳秒/毫秒/微秒/纳秒自动识别gtime.Time GoFrame 自己的时间类型---三、复合类型类型 说明map ↔ struct 最常用的场景支持嵌套map ↔ []struct Map 数组转结构体数组struct ↔ struct 不同结构体之间字段映射[]T ↔ []T2 切片元素类型转换map[string]interface{} ↔ 任意类型 动态数据绑定---四、特殊类型类型 说明json.RawMessage JSON 原始数据*gvar.Var GoFrame 泛型变量interface{} 任意类型通过反射处理指针类型 *int ↔ int[]*Struct ↔ []Structnil 安全处理 nil 值转换---五、常用转换函数// 基础转换gconv.Int(123) // 123gconv.String(123) // 123gconv.Bool(true) // true// 结构体转换最常用gconv.Struct(map[string]interface{}{Name: 张三,Age: 20,}, user)// 切片转换gconv.Structs(maps, users) // []map → []structgconv.Maps(users) // []struct → []map// Map 转换gconv.Map(user) // struct → mapgconv.Struct(m, user) // map → struct// 时间转换gconv.Time(2024-01-01) // time.Timegconv.GTime(1704067200) // gtime.Time自动识别秒/毫秒// 带默认值gconv.Int(abc) // 0转换失败返回零值---六、关键特性1. 自动字段映射支持 json/orm/gconv 等标签不区分大小写2. 嵌套转换结构体嵌套结构体、切片嵌套都能自动处理3. 类型容错123 → int123 → string 都能自动适配4. 指针自动解引用*int 和 int 之间无缝转换5. 递归转换深层嵌套的 map/struct 递归处理---如果你需要了解某个具体场景比如 gconv.Struct 的深拷贝行为、自定义转换规则、或者与 json 标签的配合可以进一步说明。关于 GoFrame gconv 的自动字段映射我来详细说明一下---标签优先级gconv 在转换时会按以下优先级查找字段名映射gconv 标签 json 标签 orm 标签 属性名不区分大小写---不区分大小写匹配规则这是 gconv 的一个核心特性转换时会自动忽略大小写差异type User struct {UserName string json:user_nameAge int json:age}// 以下 map 的 key 都能正确映射到 UserNamem1 : map[string]interface{}{user_name: 张三, // json 标签精确匹配UserName: 张三, // 属性名精确匹配username: 张三, // 不区分大小写匹配 ✓USERNAME: 张三, // 不区分大小写匹配 ✓userName: 张三, // 驼峰也能匹配 ✓}---标签使用示例1. 单标签 vs 多标签type User struct {// 只使用 gconv 标签Name string gconv:user_name// 多标签共存gconv 优先级最高Age int gconv:user_age json:age orm:age// 无 gconv 标签时json 标签生效Email string json:user_email// 无 gconv/json 标签时orm 标签生效Phone string orm:user_phone// 无任何标签时按属性名不区分大小写匹配Address string}2. 忽略字段type User struct {Name string gconv:namePassword string gconv:- // 忽略该字段不参与转换}---嵌套结构体的标签映射type Address struct {City string json:cityStreet string json:street}type User struct {Name string json:nameAddress Address json:address // 嵌套结构体}// map 能正确映射到嵌套字段m : map[string]interface{}{name: 张三,address: map[string]interface{}{city: 北京,street: 长安街,},}var user Usergconv.Struct(m, user)---实际开发建议场景 推荐做法API 接口参数绑定 使用 json 标签通用标准数据库模型转换 使用 orm 标签配合 GDB需要自定义映射名 使用 gconv 标签优先级最高字段不想被转换 gconv:- 或 json:-前端传参风格不一致 依赖不区分大小写特性无需额外处理---注意事项1. 同名冲突如果多个字段映射到同一个 key忽略大小写后后面的字段会覆盖前面的2. 指针字段gconv 会自动处理指针类型的创建和赋值3. 自定义类型实现了 Scanner/Valuer 接口的自定义类型也能正常转换4. 性能不区分大小写的匹配会略慢于精确匹配但通常可忽略---如果你有具体的转换场景遇到问题比如某个字段映射不上、或者嵌套结构体转换异常可以贴代码我帮你分析。
http://www.zskr.cn/news/1403470.html

相关文章:

  • 如何免费获取微信视频号和抖音无水印视频?跨平台资源下载神器res-downloader完全指南
  • 实战案例|二维码组件在【设备巡检表单】中的真实应用
  • SRWE完整教程:免费Windows窗口编辑器终极指南,轻松调整任意程序窗口
  • Untrunc:拯救损坏视频文件的终极救星,让珍贵回忆重获新生
  • 博德之门3脚本扩展器:5分钟掌握终极游戏自定义工具
  • 西宁市2026年5月黄金回收行情解析与六大靠谱渠道盘点,高位金价下变现必看 - 润富黄金珠宝行
  • 财富的死亡与重生:从历史货币到数字资产的价值存储逻辑
  • 打板难?AI让秋衣秋裤一次过
  • QMCDecode音频格式解密指南:3步解锁QQ音乐加密文件
  • 大规模MIMO中天线选择与波束成形的联合自适应优化算法解析
  • Pot-Desktop深度实战:打造高效跨平台划词翻译与OCR解决方案
  • 德国弗氏管道:以硬核品质为装企赋能,制胜中高端地暖市场
  • Python函数:def定义函数与参数传递基础
  • 逆变型发电机电能质量治理:从虚拟阻抗到多机协同的工程实践
  • 电力体制改革深化,源网荷储一体化市场化交易路径明晰
  • ORCHA框架:异构计算任务编排与性能优化实践
  • 2026年5月揭阳黄金回收:6家门店实测排名,这份榜单请收好 - 润富黄金珠宝行
  • AI视频封面软件哪个好?5款主流工具对比评测
  • 开源DWG处理新选择:LibreDWG如何破解CAD文件格式封闭难题?
  • 上海GEO服务商实力图谱:2026行业全景与优选梯队
  • 大疆无人机固件自由下载神器:DankDroneDownloader 完整使用指南
  • WeChatPad:打破微信设备限制,实现平板模式双设备登录
  • 创业团队如何借助Taotoken低成本快速验证多个AI模型能力
  • 如何高效部署无人机影像处理平台:WebODM专业级配置方案详解
  • 【小沐学C#】C#逆向反编译实战:用JetBrains dotPeek洞悉第三方库源码
  • 第二十一届温州国际泵阀管道展览会圆满收官 - GrowthUME
  • 2026年5月惠州黄金回收全攻略:金价高位震荡,六大正规机构助你安全变现 - 润富黄金珠宝行
  • 品牌商标转让平台怎么选?一站式商标转让服务指南,选标、签约、过户全流程代办 - 资讯纵览
  • 从原理到仿真:基于MATLAB的雷达DBF与干涉测角核心算法实现
  • 如何为Windows虚拟机快速构建virtio-win驱动包