假设我有一个通常处理请求正文的函数func GetReqBody(r *http.Request) (interface {}, error){ var data interface{} decorder := json.NewDecoder(r.Body) decorder.DisallowUnknownFields() err := decorder.Decode(&data) return data, err}然后在控制器中,我将不得不做类型断言func post(w http.ResponseWriter, r *http.Request) { data, err := utils.GetReqBody(r) //req.User is a struct newUser, ok := data.(req.User) // ...}是否可以将类型断言登录封装在函数中?为此,我需要将结构传递到函数中,但由于它不是值,因此我无法执行此操作。GetReqBody
1 回答
哔哔one
TA贡献1854条经验 获得超8个赞
“是否可以将类型断言登录封装在 GetReqBody 函数中?”--不,这是不可能的,没有任何有用的方式。
但是,您可以通过以下方式简化代码:
func GetReqBody(r *http.Request, data interface{}) error {
decorder := json.NewDecoder(r.Body)
decorder.DisallowUnknownFields()
return decorder.Decode(data)
}
func post(w http.ResponseWriter, r *http.Request) {
var newUser req.User
if err := utils.GetReqBody(r, &newUser); err != nil {
// handle err
}
// ...
}
- 1 回答
- 0 关注
- 87 浏览
添加回答
举报
0/150
提交
取消