目前赋值是先判断类型,然后赋值,简化如下
```
switch v.Field(i).Kind() {
case reflect.String:
v.Field(i).SetString(value)
case reflect.Int:
temp,_:=strconv.Atoi(value)
v.Field(i).SetInt(int64(temp))
}
```
为啥不能直接这样
```
v.Field(i).Set(reflect.ValueOf(value))
```
Value提供Set方法的目的是什么?
看了下我的configloader的核心代码
```go
func SetValue(dst, src reflect.Value) error {
if !dst.CanSet() {
return ErrNotSetable
}
if !src.Type().AssignableTo(dst.Type()) {
return ErrNotAssignable
}
dst.Set(src)
return nil
}
```
可以用啊,跑了好多个项目好久了
#1
更多评论