| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263 | 
							- package utils
 
- import (
 
- 	"fmt"
 
- 	"reflect"
 
- 	"strings"
 
- )
 
- func ReflectTrans(obj interface{}) {
 
- 	v := reflect.ValueOf(obj).Elem()
 
- 	t := v.Type()
 
- 	data := make(map[string]string)
 
- 	for k := 0; k < t.NumField(); k++ {
 
- 		if t.Field(k).Type.Kind() == reflect.Bool {
 
- 			key := fmt.Sprintf("%sStr", t.Field(k).Name)
 
- 			value := "no"
 
- 			if v.Field(k).Interface().(bool) {
 
- 				value = "yes"
 
- 			}
 
- 			data[key] = value
 
- 		}
 
- 	}
 
- 	for k := 0; k < t.NumField(); k++ {
 
- 		if value, ok := data[t.Field(k).Name]; ok {
 
- 			v.Field(k).SetString(value)
 
- 			if v.Field(k).CanSet() {
 
- 				v.Field(k).SetString(value)
 
- 			}
 
- 		}
 
- 	}
 
- }
 
- func MapTrans(obj interface{}) {
 
- 	v := reflect.ValueOf(obj).Elem()
 
- 	t := v.Type()
 
- 	data := make(map[string]bool)
 
- 	for k := 0; k < t.NumField(); k++ {
 
- 		if v.Field(k).Interface() == "yes" || v.Field(k).Interface() == "no" {
 
- 			key := strings.TrimSuffix(t.Field(k).Name, "Str")
 
- 			var value bool
 
- 			if v.Field(k).Interface().(string) == "yes" {
 
- 				value = true
 
- 			} else {
 
- 				value = false
 
- 			}
 
- 			data[key] = value
 
- 		}
 
- 	}
 
- 	for k := 0; k < t.NumField(); k++ {
 
- 		if value, ok := data[t.Field(k).Name]; ok {
 
- 			v.Field(k).SetBool(value)
 
- 			if v.Field(k).CanSet() {
 
- 				v.Field(k).SetBool(value)
 
- 			}
 
- 		}
 
- 	}
 
- }
 
 
  |