登录
首页 >  Golang >  Go问答

正确的模式将函数解构到结构中

来源:stackoverflow

时间:2024-03-20 14:42:28 440浏览 收藏

对于需要从函数返回的接口值中解析 JSON 到结构中的场景,有几种方法可以实现。最合适的方法是将指向目标值的指针作为函数参数传递,并在解析时将指针值传递给 `json.Unmarshal` 函数。这样可以确保结构被正确填充,而无需额外复制或类型转换。

问题内容

我有一个函数 callAPI,其返回类型为 interface{}

我有一个结构 Company,我想在其中 Unmarshal()callAPI() 生成的 JSON。

我应该让 callAPI() 返回 Company{} 吗?

或者,我应该让 callAPI() 返回 []byte,然后将 Unmarshal() 转换为 Company 吗?

或者,还有其他方法可以实现我想要实现的目标吗?


正确答案


将指向目标值的指针作为参数传递。将指针值传递给 json.unmarshal:

func callapi(a1 t1, a2 t2, v interface{}) error {
    // use a1, a2, ... to get api response []byte, p
    return json.unmarshal(p, v)
}

这样称呼它:

var c Company
err := callAPI(a1, a2, &c)
if err != nil {
     // handle error
}
// Use company.

将占位符 a1a2t1t2 替换为适合您的函数的任何参数。

Run an example on the playground

今天关于《正确的模式将函数解构到结构中》的内容就介绍到这里了,是不是学起来一目了然!想要了解更多关于的内容请关注golang学习网公众号!

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