登录
首页 >  Golang >  Go问答

向函数传递通用对象

来源:stackoverflow

时间:2024-02-16 13:54:22 349浏览 收藏

积累知识,胜过积蓄金银!毕竟在Golang开发的过程中,会遇到各种各样的问题,往往都是一些细节知识点还没有掌握好而导致的,因此基础知识点的积累是很重要的。下面本文《向函数传递通用对象》,就带大家讲解一下知识点,若是你对本文感兴趣,或者是想搞懂其中某个知识点,就请你继续往下看吧~

问题内容

我发现自己经常执行以下操作,并且希望减少重复。

var customer model.customer

decoder := json.newdecoder(r.body)
decoder.disallowunknownfields()
err := decoder.decode(&customer)
if err != nil {
    fmt.print(err)
}

dosomethingwith(customer)

我想编写一个简单的函数,可以接受 r.body 和一些要映射到的对象,即 model.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;
}

正确答案


您可以使用 interface{} 或等待 generics

func fromJson(body io.ReadCloser, obj interface{}) error {
    decoder := json.NewDecoder(body)
    decoder.DisallowUnknownFields()
    return decoder.Decode(obj)
}

例如,如果您检查 the doc for Decode,您可以看到它使用了这种机制,这在 go 中很常见。

工作示例:https://play.golang.org/p/D3GDKtUJxHC

理论要掌握,实操不能落!以上关于《向函数传递通用对象》的详细介绍,大家都掌握了吧!如果想要继续提升自己的能力,那么就来关注golang学习网公众号吧!

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