gpt4 book ai didi

go - 如何在 Golang 中将不同类型的结构作为参数传递给函数

转载 作者:数据小太阳 更新时间:2023-10-29 03:40:27 24 4
gpt4 key购买 nike

我有一个将 http 响应 json 解码为结构的函数。我有两种类型的结构需要传递给此函数,并将结构类型作为返回值以获取解码的 json。

我的函数现在可以处理一种类型,需要帮助才能处理不同类型的结构,并返回该结构。

// Response json
type responseResult struct {
result string
}

type loginResult struct {
responseResult
token string
}

func responseBodyDecoder(resp http.Response,response *responseResult) {
// get result form Response
decoder := json.NewDecoder(resp.Body)
decode_err := decoder.Decode(&response)
if decode_err != nil {
panic(decode_err)
}
}

最佳答案

您可以使用 interface{} 类型:

func responseBodyDecoder(resp http.Response,response interface{}) {
// get result form Response
decoder := json.NewDecoder(resp.Body)
decode_err := decoder.Decode(response)
if decode_err != nil {
panic(decode_err)
}
}

现在,您可以:

ret:=loginResult{}
responseBodyDecoder(resp, &ret)

ret2:=responseResult{}
responseBodyDecoder(resp, &ret2)

但请注意,struct responseResultresponseResult 都不会导出任何元素。您必须修改定义:

type responseResult struct {
Result string
}

关于go - 如何在 Golang 中将不同类型的结构作为参数传递给函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55913590/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com