Go代码

相同的两个Struct 复制值

import "reflect"

func main() {

    type User struct {
        Id   int    `json:"id"`
        Name string `json:"name"`
        Adr  string `json:"adr"`
    }   

    type Maser struct {
        Id   int    `json:"id"`
        Name string `json:"name"`
        Adr  string `json:"adr"`
    }   

    var u User
    var s Maser

    u.Id = 1234
    u.Name = "testu"
    u.Adr = "adr"

    dv := reflect.ValueOf(&s).Elem()
    sv := reflect.ValueOf(u)
    st := reflect.TypeOf(u)

    for i := 0; i < sv.NumField(); i++ {
        //fmt.Printf("Field %d: %v => %v\n", i, st.Field(i).Name, sv.Field(i))
        nk := st.Field(i).Name
        nv := sv.Field(i)
        dv.FieldByName(nk).Set(nv)
    }   

    fmt.Println(s)
}

results matching ""

    No results matching ""