@@ -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