我正在调用一个函数进行http请求,使用两个通过引用传递的参数。我将[]byte传递给v接口。我希望该函数能够更新v接口引用值。响应正文是一个字符串,我想将字符串值传递给v接口。然而,尝试了很多方法都没有成功。
下面是代码,你可以看到我声明byts
为v.(*[]byte)
,以便让v
与响应体的字符串值一起更新。但它不起作用。 v
始终为nil
。请建议任何方法使v
能够更新为字符串值。
func (s *BackendConfiguration) Do(req *http.Request, v interface{}) error {
res, err := s.HTTPClient.Do(req)
defer res.Body.Close()
resBody, err := ioutil.ReadAll(res.Body)
if v != nil {
byts, ok := v.(*[]byte)
if len(resBody) > 0 {
byts = append(byts, resBody...)
return nil
}
}
}
return nil
}
(interface {},err)
?这样你就可以在追加后使用return byts,nil
。 - serejjaDo()
方法的代码。同时请检查ok
变量。但是您传递的值v
很可能不是*[]byte
类型! - icza