Skip to content

Commit 2990297

Browse files
author
zhangyu
committed
feat:增加cast转换失败默认值
1 parent e9f84bf commit 2990297

File tree

2 files changed

+261
-1
lines changed

2 files changed

+261
-1
lines changed

mt_test.go

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ import (
77

88
"github.com/Netflix/go-env"
99
"github.com/edifierx666/goproject-kit/os/kcfg"
10+
"github.com/edifierx666/goproject-kit/utils/kcast"
1011
)
1112

1213
func TestName(t *testing.T) {
@@ -21,7 +22,8 @@ func TestName(t *testing.T) {
2122
fmt.Println(err, envSet, res, environ)
2223
}
2324
func TestName1(t *testing.T) {
24-
25+
toBool := kcast.ToBool("true", false)
26+
fmt.Println(toBool)
2527
}
2628
func TestName2(t *testing.T) {
2729
}

utils/kcast/kcast.go

Lines changed: 258 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,258 @@
1+
package kcast
2+
3+
import (
4+
"time"
5+
6+
"github.com/spf13/cast"
7+
)
8+
9+
// ToBool casts an interface to a bool type.
10+
func ToBool(i interface{}, fallbackVal ...bool) bool {
11+
v, e := cast.ToBoolE(i)
12+
if e != nil && len(fallbackVal) >= 0 {
13+
return fallbackVal[0]
14+
}
15+
return v
16+
}
17+
18+
// ToTime casts an interface to a time.Time type.
19+
func ToTime(i interface{}, fallbackVal ...time.Time) time.Time {
20+
v, e := cast.ToTimeE(i)
21+
if e != nil && len(fallbackVal) >= 0 {
22+
return fallbackVal[0]
23+
}
24+
return v
25+
}
26+
27+
func ToTimeInDefaultLocation(i interface{}, location *time.Location, fallbackVal ...time.Time) time.Time {
28+
v, e := cast.ToTimeInDefaultLocationE(i, location)
29+
if e != nil && len(fallbackVal) >= 0 {
30+
return fallbackVal[0]
31+
}
32+
return v
33+
}
34+
35+
// ToDuration casts an interface to a time.Duration type.
36+
func ToDuration(i interface{}, fallbackVal ...time.Duration) time.Duration {
37+
v, e := cast.ToDurationE(i)
38+
if e != nil && len(fallbackVal) >= 0 {
39+
return fallbackVal[0]
40+
}
41+
return v
42+
}
43+
44+
// ToFloat64 casts an interface to a float64 type.
45+
func ToFloat64(i interface{}, fallbackVal ...float64) float64 {
46+
v, e := cast.ToFloat64E(i)
47+
if e != nil && len(fallbackVal) >= 0 {
48+
return fallbackVal[0]
49+
}
50+
return v
51+
}
52+
53+
// ToFloat32 casts an interface to a float32 type.
54+
func ToFloat32(i interface{}, fallbackVal ...float32) float32 {
55+
v, e := cast.ToFloat32E(i)
56+
if e != nil && len(fallbackVal) >= 0 {
57+
return fallbackVal[0]
58+
}
59+
return v
60+
}
61+
62+
// ToInt64 casts an interface to an int64 type.
63+
func ToInt64(i interface{}, fallbackVal ...int64) int64 {
64+
v, e := cast.ToInt64E(i)
65+
if e != nil && len(fallbackVal) >= 0 {
66+
return fallbackVal[0]
67+
}
68+
return v
69+
}
70+
71+
// ToInt32 casts an interface to an int32 type.
72+
func ToInt32(i interface{}, fallbackVal ...int32) int32 {
73+
v, e := cast.ToInt32E(i)
74+
if e != nil && len(fallbackVal) >= 0 {
75+
return fallbackVal[0]
76+
}
77+
return v
78+
}
79+
80+
// ToInt16 casts an interface to an int16 type.
81+
func ToInt16(i interface{}, fallbackVal ...int16) int16 {
82+
v, e := cast.ToInt16E(i)
83+
if e != nil && len(fallbackVal) >= 0 {
84+
return fallbackVal[0]
85+
}
86+
return v
87+
}
88+
89+
// ToInt8 casts an interface to an int8 type.
90+
func ToInt8(i interface{}, fallbackVal ...int8) int8 {
91+
v, e := cast.ToInt8E(i)
92+
if e != nil && len(fallbackVal) >= 0 {
93+
return fallbackVal[0]
94+
}
95+
return v
96+
}
97+
98+
// ToInt casts an interface to an int type.
99+
func ToInt(i interface{}, fallbackVal ...int) int {
100+
v, e := cast.ToIntE(i)
101+
if e != nil && len(fallbackVal) >= 0 {
102+
return fallbackVal[0]
103+
}
104+
return v
105+
}
106+
107+
// ToUint casts an interface to a uint type.
108+
func ToUint(i interface{}, fallbackVal ...uint) uint {
109+
v, e := cast.ToUintE(i)
110+
if e != nil && len(fallbackVal) >= 0 {
111+
return fallbackVal[0]
112+
}
113+
return v
114+
}
115+
116+
// ToUint64 casts an interface to a uint64 type.
117+
func ToUint64(i interface{}, fallbackVal ...uint64) uint64 {
118+
v, e := cast.ToUint64E(i)
119+
if e != nil && len(fallbackVal) >= 0 {
120+
return fallbackVal[0]
121+
}
122+
return v
123+
}
124+
125+
// ToUint32 casts an interface to a uint32 type.
126+
func ToUint32(i interface{}, fallbackVal ...uint32) uint32 {
127+
v, e := cast.ToUint32E(i)
128+
if e != nil && len(fallbackVal) >= 0 {
129+
return fallbackVal[0]
130+
}
131+
return v
132+
}
133+
134+
// ToUint16 casts an interface to a uint16 type.
135+
func ToUint16(i interface{}, fallbackVal ...uint16) uint16 {
136+
v, e := cast.ToUint16E(i)
137+
if e != nil && len(fallbackVal) >= 0 {
138+
return fallbackVal[0]
139+
}
140+
return v
141+
}
142+
143+
// ToUint8 casts an interface to a uint8 type.
144+
func ToUint8(i interface{}, fallbackVal ...uint8) uint8 {
145+
v, e := cast.ToUint8E(i)
146+
if e != nil && len(fallbackVal) >= 0 {
147+
return fallbackVal[0]
148+
}
149+
return v
150+
}
151+
152+
// ToString casts an interface to a string type.
153+
func ToString(i interface{}, fallbackVal ...string) string {
154+
v, e := cast.ToStringE(i)
155+
if e != nil && len(fallbackVal) >= 0 {
156+
return fallbackVal[0]
157+
}
158+
return v
159+
}
160+
161+
// ToStringMapString casts an interface to a map[string]string type.
162+
func ToStringMapString(i interface{}, fallbackVal ...map[string]string) map[string]string {
163+
v, e := cast.ToStringMapStringE(i)
164+
if e != nil && len(fallbackVal) >= 0 {
165+
return fallbackVal[0]
166+
}
167+
return v
168+
}
169+
170+
// ToStringMapStringSlice casts an interface to a map[string][]string type.
171+
func ToStringMapStringSlice(i interface{}, fallbackVal ...map[string][]string) map[string][]string {
172+
v, e := cast.ToStringMapStringSliceE(i)
173+
if e != nil && len(fallbackVal) >= 0 {
174+
return fallbackVal[0]
175+
}
176+
return v
177+
}
178+
179+
// ToStringMapBool casts an interface to a map[string]bool type.
180+
func ToStringMapBool(i interface{}, fallbackVal ...map[string]bool) map[string]bool {
181+
v, e := cast.ToStringMapBoolE(i)
182+
if e != nil && len(fallbackVal) >= 0 {
183+
return fallbackVal[0]
184+
}
185+
return v
186+
}
187+
188+
// ToStringMapInt casts an interface to a map[string]int type.
189+
func ToStringMapInt(i interface{}, fallbackVal ...map[string]int) map[string]int {
190+
v, e := cast.ToStringMapIntE(i)
191+
if e != nil && len(fallbackVal) >= 0 {
192+
return fallbackVal[0]
193+
}
194+
return v
195+
}
196+
197+
// ToStringMapInt64 casts an interface to a map[string]int64 type.
198+
func ToStringMapInt64(i interface{}, fallbackVal ...map[string]int64) map[string]int64 {
199+
v, e := cast.ToStringMapInt64E(i)
200+
if e != nil && len(fallbackVal) >= 0 {
201+
return fallbackVal[0]
202+
}
203+
return v
204+
}
205+
206+
// ToStringMap casts an interface to a map[string]interface{} type.
207+
func ToStringMap(i interface{}, fallbackVal ...map[string]interface{}) map[string]interface{} {
208+
v, e := cast.ToStringMapE(i)
209+
if e != nil && len(fallbackVal) >= 0 {
210+
return fallbackVal[0]
211+
}
212+
return v
213+
}
214+
215+
// ToSlice casts an interface to a []interface{} type.
216+
func ToSlice(i interface{}, fallbackVal ...[]interface{}) []interface{} {
217+
v, e := cast.ToSliceE(i)
218+
if e != nil && len(fallbackVal) >= 0 {
219+
return fallbackVal[0]
220+
}
221+
return v
222+
}
223+
224+
// ToBoolSlice casts an interface to a []bool type.
225+
func ToBoolSlice(i interface{}, fallbackVal ...[]bool) []bool {
226+
v, e := cast.ToBoolSliceE(i)
227+
if e != nil && len(fallbackVal) >= 0 {
228+
return fallbackVal[0]
229+
}
230+
return v
231+
}
232+
233+
// ToStringSlice casts an interface to a []string type.
234+
func ToStringSlice(i interface{}, fallbackVal ...[]string) []string {
235+
v, e := cast.ToStringSliceE(i)
236+
if e != nil && len(fallbackVal) >= 0 {
237+
return fallbackVal[0]
238+
}
239+
return v
240+
}
241+
242+
// ToIntSlice casts an interface to a []int type.
243+
func ToIntSlice(i interface{}, fallbackVal ...[]int) []int {
244+
v, e := cast.ToIntSliceE(i)
245+
if e != nil && len(fallbackVal) >= 0 {
246+
return fallbackVal[0]
247+
}
248+
return v
249+
}
250+
251+
// ToDurationSlice casts an interface to a []time.Duration type.
252+
func ToDurationSlice(i interface{}, fallbackVal ...[]time.Duration) []time.Duration {
253+
v, e := cast.ToDurationSliceE(i)
254+
if e != nil && len(fallbackVal) >= 0 {
255+
return fallbackVal[0]
256+
}
257+
return v
258+
}

0 commit comments

Comments
 (0)