@@ -27,17 +27,12 @@ func (r RawParams) Float64(key string) float64 {
27
27
28
28
// Int64 .
29
29
func (r RawParams ) Int64 (key string ) int64 {
30
- if ! r .IsSet (key ) {
31
- return int64 (0 )
32
- }
33
- var str string
34
- if f , ok := r [key ].(float64 ); ok {
35
- str = fmt .Sprintf ("%.0f" , f )
36
- } else {
37
- str = fmt .Sprintf ("%+v" , r [key ])
38
- }
39
- res , _ := strconv .ParseInt (str , 10 , 64 )
40
- return res
30
+ return intHelper [int64 ](r , key )
31
+ }
32
+
33
+ // Int .
34
+ func (r RawParams ) Int (key string ) int {
35
+ return intHelper [int ](r , key )
41
36
}
42
37
43
38
// String .
@@ -107,17 +102,31 @@ func sliceHelper[T any](r RawParams, key string) []T {
107
102
}
108
103
var res []T
109
104
if s , ok := r [key ].([]interface {}); ok {
110
- res = make ( []T , len ( s ))
111
- for i , v := range s {
105
+ res = []T {}
106
+ for _ , v := range s {
112
107
if r , ok := v .(T ); ok {
113
- res [ i ] = r
114
- } else {
115
- return nil
108
+ res = append ( res , r )
109
+ // } else {
110
+ // return nil // TODO why continue?
116
111
}
117
112
}
118
113
}
119
114
return res
120
115
}
121
116
117
+ func intHelper [T int | int64 ](r RawParams , key string ) T {
118
+ if ! r .IsSet (key ) {
119
+ return T (0 )
120
+ }
121
+ var str string
122
+ if f , ok := r [key ].(float64 ); ok {
123
+ str = fmt .Sprintf ("%.0f" , f )
124
+ } else {
125
+ str = fmt .Sprintf ("%+v" , r [key ])
126
+ }
127
+ res , _ := strconv .ParseInt (str , 10 , 64 )
128
+ return T (res )
129
+ }
130
+
122
131
// Resources all cosmos use this
123
132
type Resources map [string ]* RawParams
0 commit comments