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] ...
通过标签(tag)和反射,将上文示例的newUser()返回的结果转化成下面的一个map。其中包含struct的域的展开,定制化struct的方法。 map[string]interface{}{"name":"user","no_dive":StructNoDive{NoDive:1},// dive struct field"url":"https://github.com/liangyaopei","star":1,// customized method"time"...
funcReflectMethod(objinterface{})map[string]interface{} { t := reflect.TypeOf(obj) v := reflect.ValueOf(obj)vardata =make(map[string]interface{})fori :=0; i < t.NumField(); i++ { data[strings.ToLower(t.Field(i).Name)] = v.Field(i).Interface() }returndata } 使用第三方库 ...
"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[string]interface{}) for i := 0; i < ...
// 方法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) { ...
func Struct2Map(obj interface{}) map[string]interface{} { t := reflect.TypeOf(obj)v := reflect.ValueOf(obj)var data = make(map[string]interface{})for i := 0; i < t.NumField(); i++ { data[t.Field(i).Name] = v.Field(i).Interface()} return data } func main() { user ...
一、map, struct 互转 1.map 转 struct map 转struct 有两种方式 1.是通过第三方包 github.com/mitchellh/mapstructure 2.通过 map 转json,再通过 json 转struct 第三方包 mapstructure 下载依赖,通过第三方依赖进行转换 go get github.com/goinggo/mapstructure func TestMapToStructByMod(t *testing.T...
2. 合并 map 到 struct 接下来我们看另一个场景:我们有一个 map,需要将其内容合并到一个已有的 struct 中。这种需求在动态配置加载时特别常见。 funcmapToStruct(){ varm =make(map[string]interface{})m["name"] ="Tom"m["age"] =23m["email"] ="12...
struct转map package mainimport("fmt""reflect""time")type Userstruct{Id int64 Username string Password string Logintime time.Time}funcStruct2Map(obj interface{})map[string]interface{}{t:=reflect.TypeOf(obj)v:=reflect.ValueOf(obj)var data=make(map[string]interface{})fori:=0;i<t.NumField(...
常见的struct转化可以通过json先转换成字符串,然后再转换成map对象。 现在介绍的反射的方式,其中需要注意的是,反射不能够获取struct中没有被暴露出的变量(小写开头的变量)。 好,下面上货。 代码语言:javascript 复制 packagedemoimport("fmt""reflect""testing""time")type CommonObj struct{Name string`persistence:...