code_style.go 691 B

1234567891011121314151617181920212223242526272829303132
  1. package common
  2. import "reflect"
  3. // setFieldInfo 根据反射获取实体的信息
  4. func setFieldInfo(entity interface{}) map[string]string {
  5. rt := reflect.TypeOf(entity)
  6. if rt.Kind().String() == "ptr" {
  7. rt = rt.Elem()
  8. }
  9. if rt.Kind().String() != "struct" {
  10. return nil
  11. }
  12. infoMap := make(map[string]string)
  13. for i := 0; i < rt.NumField(); i++ {
  14. jsonTag := rt.Field(i).Tag.Get("json")
  15. ormTag := rt.Field(i).Tag.Get("orm")
  16. if jsonTag == "" {
  17. continue
  18. }
  19. if ormTag == "" {
  20. infoMap[jsonTag] = rt.Field(i).Name
  21. } else {
  22. infoMap[jsonTag] = ormTag
  23. }
  24. }
  25. return infoMap
  26. }
  27. func Snake2Orm(entity interface{}, field string) string {
  28. return setFieldInfo(entity)[field]
  29. }