在Go语言中,将结构体(struct)转换为map(特别是从map[string]interface{}类型)通常需要使用反射(reflection)机制,因为Go是静态类型语言,而结构体和map在内存中的表示和访问方式有所不同。下面,我将根据您的提示,逐步说明如何实现这一转换,并提供相应的代码示例。 1. 创建一个Go语言的结构体实例 首先,我们定义一个...
func structToMap(s interface{}) map[string]interface{} { result := make(map[string]interface{}) // 使用反射获取结构体字段信息 v := reflect.ValueOf(s) t := reflect.TypeOf(s) for i := 0; i < t.NumField(); i++ { // 将结构体字段名和值存储到Map中 result[t.Field(i).Name] ...
我的Github仓库github.com/liangyaopei/struct_to_map 假设有下面的一个结构体 funcnewUser()User{name:="user"MyGithub:=GithubPage{URL:"https://github.com/liangyaopei",Star:1,}NoDive:=StructNoDive{NoDive:1}dateStr:="2020-07-21 12:00:00"date,_:=time.Parse(timeLayout,dateStr)profile:=...
packagedemoimport("fmt""reflect""testing""time")type CommonObj struct{Name string`persistence:"name"`Age int`persistence:"age"`LastUpdateTime time.Time`persistence:"lastUpdateTime"`score float64`persistence:"-"`}funcStructConvertMapByTag(objinterface{},tagName string)map[string]interface{}{t:=re...
输出如下: 总结 从测试结果可以看到,三种方式都能完成struct转map,但是reflect方法无法识别结构体中的tag,第三方库只能使用tagstructs,所以如果考虑兼容性(考虑到协同开发)和尽量使用官方库的原则,推荐使用第一种方法(json转换)。 reflect.Field json structs
// 方法1:使用go中标准库里的json编码成[]byte,然后再解码到map里 //data, _ := json.Marshal(&User)//m := make(map[string]any) //json.Unmarshal(data, &m)//Struct2map方法2:通过反射将struct转换成mapfuncStruct2map(obj any) (datamap[string]any, err error) { ...
import ( "fmt" "reflect" "time" ) type User struct { Id int64 Username string Password string Logintime time.Time } func Struct2Map(obj interface{}) map[string]interface{} { t := reflect.TypeOf(obj) v := reflect.ValueOf(obj) ...
golangstruct转map struct转map package main import ("fmt""reflect""time")type User struct { Id int64 Username string Password string Logintime time.Time } func Struct2Map(obj interface{}) map[string]interface{} { t := reflect.TypeOf(obj)v := reflect.ValueOf(obj)var data = make(...
一、map与struct互转 实现map到struct的转换有两途径:一是借助第三方包github.com/mitchellh/mapstructure,二是将map转换为json,再由json转换为struct,操作繁琐。通过第三方库mapstructure进行转换更为高效,所需时间仅为61.757μs,优于通过json转换的方式,时间约为134.299μs。另一种转换方式是利用...
最近做Go开发的时候接触到了一个新的orm第三方框架gorose,在使用的过程中,发现没有类似beego进行直接对struct结构进行操作的方法,有部分API是通过map进行数据库相关操作,那么就需要我们把struct转化成map,下面是是我尝试两种不同struct转换成map的方法: mport ( "encoding/json" "fmt" "reflect" "time" ) type ...