Go开发Struct转换成map两种方式比较
最近做Go开发的时候接触到了一个新的orm第三方框架gorose,在使用的过程中,发现没有类似beego进行直接对struct结构进行操作的方法,有部分API是通过map进行数据库相关操作,那么就需要我们把struct转化成map,下面是是我尝试两种不同struct转换成map的方法
mport ("encoding/json""fmt""reflect""time" )type Persion struct {Id intName stringAddress stringEmail stringSchool stringCity stringCompany stringAge intSex stringProviece stringCom stringPostTo stringBuys stringHos string }func main() {StructToMapViaJson()//StructToMapViaReflect() }func StructToMapViaJson() {m := make(map[string]interface{})t := time.Now()person := Persion{Id: 98439,Name: "zhaondifnei",Address: "大沙地",Email: "dashdisnin@126.com",School: "广州第十五中学",City: "zhongguoguanzhou",Company: "sndifneinsifnienisn",Age: 23,Sex: "F",Proviece: "jianxi",Com: "广州兰博基尼",PostTo: "蓝鲸XXXXXXXX",Buys: "shensinfienisnfieni",Hos: "zhonsndifneisnidnfie",}j, _ := json.Marshal(person)json.Unmarshal(j, &m)fmt.Println(m)fmt.Println(time.Now().Sub(t)) }
一、通过struct转json,json转成map
func StructToMapViaJson() {m := make(map[string]interface{})t := time.Now()person := Persion{Id: 98439,Name: "zhaondifnei",Address: "大沙地",Email: "dashdisnin@126.com",School: "广州第十五中学",City: "zhongguoguanzhou",Company: "sndifneinsifnienisn",Age: 23,Sex: "F",Proviece: "jianxi",Com: "广州兰博基尼",PostTo: "蓝鲸XXXXXXXX",Buys: "shensinfienisnfieni",Hos: "zhonsndifneisnidnfie",}j, _ := json.Marshal(person)json.Unmarshal(j, &m)fmt.Println(m)fmt.Printf("duration:%d", time.Now().Sub(t)) } output: map[Proviece:jianxi Com:广州兰博基尼 Hos:zhonsndifneisnidnfie Name:zhaondifnei Company:sndifneinsifnienisn Buys:shensinfienisnfieni Age:23 PostTo:蓝鲸XXXXXXXX Address:大沙地 School:广州第十五中学 City:zhongguoguanzhou Sex:F Id:98439 Email:dashdisnin@126.com] duration:250467
二、通过反射形式生成map
func StructToMapViaReflect() {m := make(map[string]interface{})t := time.Now()person := Persion{Id: 98439,Name: "zhaondifnei",Address: "大沙地",Email: "dashdisnin@126.com",School: "广州第十五中学",City: "zhongguoguanzhou",Company: "sndifneinsifnienisn",Age: 23,Sex: "F",Proviece: "jianxi",Com: "广州兰博基尼",PostTo: "蓝鲸XXXXXXXX",Buys: "shensinfienisnfieni",Hos: "zhonsndifneisnidnfie",}elem := reflect.ValueOf(&person).Elem()relType := elem.Type()for i := 0; i < relType.NumField(); i++ {m[relType.Field(i).Name] = elem.Field(i).Interface()}fmt.Println(m)fmt.Printf("duration:%d", time.Now().Sub(t)) } output: map[Buys:shensinfienisnfieni Name:zhaondifnei City:zhongguoguanzhou Sex:F Proviece:jianxi Com:广州兰博基尼 Id:98439 School:广州第十五中学 Address:大沙地 Age:23 PostTo:蓝鲸XXXXXXXX Hos:zhonsndifneisnidnfie Email:dashdisnin@126.com Company:sndifneinsifnienisn] duration:104239
结论
通过比较可以看出,通过反射的形式转换基本上是通过json形式转换的两倍。
转载于:https://www.cnblogs.com/dfsxh/p/10315442.html
Go开发Struct转换成map两种方式比较相关推荐
- golang 开发 Struct 转换成 map 两种方式比较
原文链接:https://www.jianshu.com/p/81c4304f6d1b 最近做Go开发的时候接触到了一个新的orm第三方框架gorose,在使用的过程中,发现没有类似beego进行直接 ...
- 用VLC开发视频播放器/组件(两种方式:libVLC / VLC-Qt)
测试环境 MSVC-2015 Qt 5.14.2 QCreator 1. libVLC(关键步骤) 参考:心流剑 libVLC 各版本 下载链接 我的下载版本为:3.0.11 sdk/lib文件夹目录 ...
- ABAP和XML数据格式互相转换的两种方式
ABAP和XML数据格式互相转换是广大开发人员经常遇到的需求.本文介绍两种方式. 1. ABAP提供了一个工具类cl_proxy_xml_transform,通过它的两个方法abap_to_xml_x ...
- matlab 转换 tfrecord,训练数据集与TFRecord互相转换的两种方式
TensorFlow使用TFRecord格式来统一存储数据,该格式可以将图像数据.标签信息.图像路径以及宽高等不同类型的信息放在一起进行统一存储,从而方便有效的管理不同的属性. 将训练数据集转成TFR ...
- 技巧:Go 结构体如何转换成 map[string]interface{}
本文介绍了Go语言中将结构体转成map[string]interface{}时你需要了解的"坑",也有你需要知道的若干方法. 我们在Go语言中通常使用结构体来保存我们的数据,例如要 ...
- unicode和字符串之间的转换有两种方式
unicode和字符串之间的转换有两种方式. 1.1.通过JDK自带的"native2ascii"进行转换 首先,您测试的机器需要安装JDK,比如我的机器环境,我的JDK安 ...
- java中byte数组与int类型的转换(两种方式)
java中byte数组与int类型的转换,在网络编程中这个算法是最基本的算法,我们都知道,在socket传输中,发送.者接收的数据都是 byte数组,但是int类型是4个byte组成的,如何把一个整形 ...
- Wordpress开发 - 获取作者头像的两种方法
写在前面 今天又被一个头像坑搞惨了,一般我们获取作者的信息是都需要在循环判断中才可以使用的!比如获取作者名称 <?php the_author(); ?> .如果没有在 <?php ...
- 把json对象串转换成map对象
2019独角兽企业重金招聘Python工程师标准>>> /** * nc只支持简单的 * 把json对象串转换成map对象 * @param jsonObjStr e ...
最新文章
- 在ROS中使用奥比中光Orbbec Astra Pro
- 南京超过广州!4 月程序员工资统计出炉,平均 14596 元
- php 运行外部程序_PHP实现执行外部程序的方法详解
- 9.10 css
- grub2的配置文件grub.cfg详解
- 容器可以作为全局变量吗_四季青是风水树吗?哪些可以作为风水树?
- 网页禁止复制的chrome插件办法
- SQL的数据定义功能及语句:
- msys2安装gcc、g++编译器
- 深入理解JavaScript系列(12):变量对象(Variable Object)
- 【陆勤阅读】参加kaggle数据挖掘竞赛是怎样一种体验?
- 第一章 Shiro简介——《跟我学Shiro》[张开涛]
- mac上面比较好用的软件
- tp 框架防sql注入
- 安卓psp模拟器联机教程_psp模拟器联机游戏下载-psp模拟器联机对战版v1.0 安卓版 - 极光下载站...
- endnote修改正文中参考文献标注_如何在Endnote中修改参考文献格式
- python多个函数_请教:一个类中可以定义多个同名函数?
- 比心app源码,vue 视频播放
- sql语句中调用将汉字转换为拼音函数
- 忽视警告_不要忽视下雨的风险2