好吧,标题有点误导。我所追求的如下:
type MyStruct struct {
id int
name string
age int
}
func CreateFromMap(m map[string]interface{}) (MyStruct, error) {
var (
id int
name string
age int
ok bool
)
err := errors.New("Error!")
id, ok = m["id"].(int)
if !ok {
return nil, err
}
name, ok = m["name"].(string)
if !ok {
return nil, err
}
age, ok = m["age"].(int)
if !ok {
return nil, err
}
return MyStruct{id, name, age}, nil
}
不要问:为什么我不使用CreateFromMap(int, string, int). 那个物体来自其他地方,不在我的控制范围内。
将映射中的每个键值对映射到结构体属性已经很无聊了。但是ok在每次转换后检查是否一切正常是混乱的。
除了反射之外,还有没有更简单的方法可以做到这一点?
繁星coding
jeck猫
相关分类