为了账号安全,请及时绑定邮箱和手机立即绑定

将未初始化的结构传递给函数

将未初始化的结构传递给函数

Go
DIEA 2022-09-12 20:15:14
假设我有一个通常处理请求正文的函数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

    }


    // ...

}


查看完整回答
反对 回复 2022-09-12
  • 1 回答
  • 0 关注
  • 87 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信