网创优客建站品牌官网
为成都网站建设公司企业提供高品质网站建设
热线:028-86922220
成都专业网站建设公司

定制建站费用3500元

符合中小企业对网站设计、功能常规化式的企业展示型网站建设

成都品牌网站建设

品牌网站建设费用6000元

本套餐主要针对企业品牌型网站、中高端设计、前端互动体验...

成都商城网站建设

商城网站建设费用8000元

商城网站建设因基本功能的需求不同费用上面也有很大的差别...

成都微信网站建设

手机微信网站建站3000元

手机微信网站开发、微信官网、微信商城网站...

建站知识

当前位置:首页 > 建站知识

golang结构体转map

package main

import (
    "encoding/json"
    "fmt"
    "reflect"
    "time"
)

type Body struct {
    Person1 string
    Age     int
    Salary  float32
}

func Struct2Map(obj interface{}) (data map[string]interface{}, err error) {
    data = make(map[string]interface{})
    objT := reflect.TypeOf(obj)
    objV := reflect.ValueOf(obj)
    for i := 0; i < objT.NumField(); i++ {
        data[objT.Field(i).Name] = objV.Field(i).Interface()
    }
    err = nil
    return
}

func Test1() {
    t := time.Now()
    a := Body{"aaa", 2, 12.34}
    elem := reflect.ValueOf(&a).Elem()
    type_ := elem.Type()
    m := map[string]interface{}{}
    for i := 0; i < type_.NumField(); i++ {
        m[type_.Field(i).Name] = elem.Field(i).Interface()
    }
    fmt.Println(time.Now().Sub(t), m)
}

func Test2() {
    t := time.Now()
    persion := Body{"aaa", 2, 12.34}
    j, _ := json.Marshal(persion)
    fmt.Println(time.Now().Sub(t), string(j))
}

func Test3() {
    m := make(map[string]interface{})
    t := time.Now()
    persion := Body{"aaa", 2, 12.34}
    j, _ := json.Marshal(persion)
    json.Unmarshal(j, &m)
    fmt.Println(time.Now().Sub(t), m)
}

func Test4() {
    t := time.Now()
    persion := Body{"aaa", 2, 12.34}
    ret, _ := Struct2Map(persion)
    fmt.Println(time.Now().Sub(t), ret)
}

func main() {
    Test1()
    Test2()
    Test3()
    Test4()
}
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[string]interface{})
    for i := 0; i < t.NumField(); i++ {
        data[t.Field(i).Name] = v.Field(i).Interface()
    }
    return data
}

func main() {
    user := User{5, "zhangsan", "pwd", time.Now()}
    data := Struct2Map(user)
    fmt.Println(data)
}

文章名称:golang结构体转map
URL链接:http://bjjierui.cn/article/gsphes.html

其他资讯