package main import ( "fmt" "git.sxidc.com/go-framework/baize/framework/core/tag/assign" "reflect" "time" ) type JsonBodyID struct { ID string `assign:"toField:Id"` } type UpdateClassJsonBody struct { JsonBodyID Name string `assign:"toField:Name"` CreatedTime *time.Time UpdatedTime *time.Time } type DomainID struct { Id string } type ClassDomain struct { *DomainID Name string CreatedTime *time.Time } func main() { class := new(ClassDomain) err := assign.UseTag(&UpdateClassJsonBody{}, class, func(fromFieldName string, fromFieldElemValue reflect.Value, retFieldElementValue reflect.Value, assignTag *assign.Tag) error { fmt.Println("Field Name:", fromFieldName) fmt.Println("Type:", fromFieldElemValue.Type().String()) if fromFieldElemValue.Kind() == reflect.String { fmt.Printf("\"%+v\"\n", fromFieldElemValue.Interface()) } else { fmt.Printf("%+v\n", fromFieldElemValue.Interface()) } fmt.Printf("%+v\n", assignTag) fmt.Println() return nil }) if err != nil { panic(err) } }