Skip to content

Commit c0e5213

Browse files
committed
增强reflection SetValue功能
1 parent 36f25c5 commit c0e5213

File tree

1 file changed

+36
-0
lines changed

1 file changed

+36
-0
lines changed

reflection/utils.go

+36
Original file line numberDiff line numberDiff line change
@@ -78,6 +78,21 @@ func SetValue(f reflect.Value, v interface{}) bool {
7878
f.SetBool(d[0] != 0)
7979
}
8080
break
81+
case reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64, reflect.Uint:
82+
hasAssigned = true
83+
f.SetBool(vv.Uint() != 0)
84+
break
85+
case reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64:
86+
hasAssigned = true
87+
f.SetBool(vv.Int() != 0)
88+
break
89+
case reflect.String:
90+
b, err := strconv.ParseBool(vv.String())
91+
if err == nil {
92+
hasAssigned = true
93+
f.SetBool(b)
94+
}
95+
break
8196
}
8297
break
8398
case reflect.String:
@@ -174,6 +189,13 @@ func SetValue(f reflect.Value, v interface{}) bool {
174189
}
175190
}
176191
break
192+
case reflect.String:
193+
b, err := strconv.ParseInt(vv.String(), 10, 64)
194+
if err == nil {
195+
hasAssigned = true
196+
f.SetInt(b)
197+
}
198+
break
177199
}
178200
break
179201
case reflect.Float32, reflect.Float64:
@@ -191,6 +213,13 @@ func SetValue(f reflect.Value, v interface{}) bool {
191213
}
192214
}
193215
break
216+
case reflect.String:
217+
b, err := strconv.ParseFloat(vv.String(), 10)
218+
if err == nil {
219+
hasAssigned = true
220+
f.SetFloat(b)
221+
}
222+
break
194223
}
195224
break
196225
case reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64, reflect.Uint:
@@ -212,6 +241,13 @@ func SetValue(f reflect.Value, v interface{}) bool {
212241
}
213242
}
214243
break
244+
case reflect.String:
245+
b, err := strconv.ParseUint(vv.String(), 10, 64)
246+
if err == nil {
247+
hasAssigned = true
248+
f.SetUint(b)
249+
}
250+
break
215251
}
216252
break
217253
case reflect.Struct:

0 commit comments

Comments
 (0)