建设银行光明支行网站,网站建设百度搜索到左边的图,网站正能量下载免费软件,dw做个人简历网页怎么做最近做Go开发的时候接触到了一个新的orm第三方框架gorose#xff0c;在使用的过程中#xff0c;发现没有类似beego进行直接对struct结构进行操作的方法#xff0c;有部分API是通过map进行数据库相关操作#xff0c;那么就需要我们把struct转化成map#xff0c;下面是是我尝… 最近做Go开发的时候接触到了一个新的orm第三方框架gorose在使用的过程中发现没有类似beego进行直接对struct结构进行操作的方法有部分API是通过map进行数据库相关操作那么就需要我们把struct转化成map下面是是我尝试两种不同struct转换成map的方法 mport (encoding/jsonfmtreflecttime
)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: dashdisnin126.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转jsonjson转成map func StructToMapViaJson() {m : make(map[string]interface{})t : time.Now()person : Persion{Id: 98439,Name: zhaondifnei,Address: 大沙地,Email: dashdisnin126.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:dashdisnin126.com]
duration:250467二、通过反射形式生成map func StructToMapViaReflect() {m : make(map[string]interface{})t : time.Now()person : Persion{Id: 98439,Name: zhaondifnei,Address: 大沙地,Email: dashdisnin126.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:dashdisnin126.com Company:sndifneinsifnienisn]
duration:104239结论 通过比较可以看出通过反射的形式转换基本上是通过json形式转换的两倍。 转载于:https://www.cnblogs.com/dfsxh/p/10315442.html