我有一个函数解码http响应json到struct.And我有两种类型的结构需要传递给这个函数,并具有结构类型作为返回值来获取解码的json。
我的函数现在可以处理ONE类型,需要帮助使它可以处理不同类型的struct,并返回struct。
// 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 responseResult
和responseResult
都不会导出任何元素。你必须修改定义:
type responseResult struct {
Result string
}