我发现自己经常执行以下操作,并希望减少重复。var customer model.Customerdecoder := json.NewDecoder(r.Body)decoder.DisallowUnknownFields()err := decoder.Decode(&customer)if err != nil { fmt.Print(err)}doSomethingWith(customer)我想写一个简单的函数,可以吸收和一些对象来映射到,即r.Bodymodel.Customer所以类似的东西(无效的golang)func fromJson(body io.ReadCloser, obj T) { var obj decoder := json.NewDecoder(body) decoder.DisallowUnknownFields() err := decoder.Decode(&obj) if err != nil { fmt.Print(err) } return obj;}
1 回答

DIEA
TA贡献1820条经验 获得超3个赞
您可以使用 或 等待泛型:interface{}
func fromJson(body io.ReadCloser, obj interface{}) error { decoder := json.NewDecoder(body) decoder.DisallowUnknownFields() return decoder.Decode(obj) }
例如,如果您检查文档的Decode
,您可以看到它使用此机制,这在Go中很常见。
工作样本:https://play.golang.org/p/D3GDKtUJxHC
- 1 回答
- 0 关注
- 141 浏览
添加回答
举报
0/150
提交
取消