main.go 1.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. package main
  2. import (
  3. "fmt"
  4. "git.sxidc.com/go-framework/baize/framework/core/tag/assign"
  5. "reflect"
  6. "time"
  7. )
  8. type JsonBodyID struct {
  9. ID string `assign:"toField:Id"`
  10. }
  11. type UpdateClassJsonBody struct {
  12. JsonBodyID
  13. Name string `assign:"toField:Name"`
  14. CreatedTime *time.Time
  15. UpdatedTime *time.Time
  16. }
  17. type DomainID struct {
  18. Id string
  19. }
  20. type ClassDomain struct {
  21. *DomainID
  22. Name string
  23. CreatedTime *time.Time
  24. }
  25. func main() {
  26. class := new(ClassDomain)
  27. err := assign.UseTag(&UpdateClassJsonBody{}, class,
  28. func(fromFieldName string, fromFieldElemValue reflect.Value, retFieldElementValue reflect.Value, assignTag *assign.Tag) error {
  29. fmt.Println("Field Name:", fromFieldName)
  30. fmt.Println("Type:", fromFieldElemValue.Type().String())
  31. if fromFieldElemValue.Kind() == reflect.String {
  32. fmt.Printf("\"%+v\"\n", fromFieldElemValue.Interface())
  33. } else {
  34. fmt.Printf("%+v\n", fromFieldElemValue.Interface())
  35. }
  36. fmt.Printf("%+v\n", assignTag)
  37. fmt.Println()
  38. return nil
  39. })
  40. if err != nil {
  41. panic(err)
  42. }
  43. }