溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

golang結構體轉map

發布時間:2020-07-25 08:14:47 來源:網絡 閱讀:6846 作者:dccw 欄目:編程語言
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)
}
向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女