猿问

将泛型对象传递给函数 [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.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;

}


绝地无双
浏览 142回答 1
1回答

DIEA

您可以使用 或 等待泛型: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
随时随地看视频慕课网APP

相关分类

Go
我要回答