登录
首页 >  Golang >  Go问答

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

来源:stackoverflow

时间:2024-02-23 21:36:27 188浏览 收藏

“纵有疾风来,人生不言弃”,这句话送给正在学习Golang的朋友们,也希望在阅读本文《传递未初始化的结构给函数》后,能够真的帮助到大家。我也会在后续的文章中,陆续更新Golang相关的技术文章,有好的建议欢迎大家在评论留言,非常感谢!

问题内容

假设我有一个处理一般请求正文的函数

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函数内?为此,我需要将结构传递到函数中,但由于它不是一个值,我无法这样做。


正确答案


“是否可以将类型断言登录封装在 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
    }

    // ...
}

以上就是《传递未初始化的结构给函数》的详细内容,更多关于的资料请关注golang学习网公众号!

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>