@@ -2,11 +2,7 @@ package mapper
2
2
3
3
import (
4
4
"encoding/json"
5
- "fmt"
6
5
"golang.org/x/exp/constraints"
7
- "golang.org/x/text/cases"
8
- "golang.org/x/text/language"
9
- "reflect"
10
6
)
11
7
12
8
func Map [S any , T any ](source []S , mapper func (S ) T ) []T {
@@ -30,53 +26,6 @@ func MapStruct[S any, T any](source *S) *T {
30
26
return & target
31
27
}
32
28
33
- func SetFields [S any , T any ](source S , target T , ignoreZero bool ) (err error ) {
34
- defer func () {
35
- if r := recover (); r != nil {
36
- err = fmt .Errorf ("panic: %v" , r )
37
- }
38
- }()
39
- sourceValue := reflect .ValueOf (source )
40
- targetValue := reflect .ValueOf (target )
41
- if targetValue .Kind () != reflect .Ptr {
42
- err = fmt .Errorf ("target must be a pointer" )
43
- return
44
- }
45
- for sourceValue .Kind () == reflect .Ptr {
46
- sourceValue = sourceValue .Elem ()
47
- }
48
- targetValue = targetValue .Elem ()
49
- sourceType := sourceValue .Type ()
50
- for i := 0 ; i < sourceValue .NumField (); i ++ {
51
- field := sourceType .Field (i )
52
- fieldValue := sourceValue .Field (i )
53
- setterName := "Set" + cases .Title (language .Und , cases .NoLower ).String (field .Name )
54
- //setterName := "Set" + cases.Title(field.Name).String()
55
- method := targetValue .Addr ().MethodByName (setterName )
56
- if method .IsValid () {
57
- if method .Type ().NumIn () != 1 {
58
- err = fmt .Errorf ("method %s must have one parameter" , setterName )
59
- return
60
- }
61
- methodParamType := method .Type ().In (0 )
62
- if method .Type ().In (0 ) != fieldValue .Type () {
63
- if fieldValue .Type ().ConvertibleTo (methodParamType ) {
64
- fieldValue = fieldValue .Convert (methodParamType )
65
- } else {
66
- err = fmt .Errorf ("method %s parameter type must be %s, but got %s" , setterName , methodParamType , fieldValue .Type ())
67
- return
68
- }
69
- }
70
- if ignoreZero && fieldValue .IsZero () {
71
- continue
72
- }
73
- args := []reflect.Value {fieldValue }
74
- method .Call (args )
75
- }
76
- }
77
- return
78
- }
79
-
80
29
func Page [P constraints.Integer ](total , pageSize , defaultSize P ) P {
81
30
if total == 0 {
82
31
return 0
0 commit comments