我有一个小问题,我知道为什么它存在,但无法找到它的解决方案。
如果发生错误,我会有一个不会被使用的变量,这会导致编译器错误。
代码:
func findAll(query string) ([]Result, error) {
var res *http.Response
var err error
if res, err := http.Get("url" + url.QueryEscape(query)); err != nil {
return []Result{}, err
}
defer res.Body.Close()
var body []byte
if body, err := ioutil.ReadAll(res.Body); err != nil {
return [] Result{}, err
}
var f FilteredSearch
err = xml.Unmarshal(body, &f)
return f.Results, err
}
第一个问题在这一行:
if res, err := http.Get("url" + url.QueryEscape(query)); err != nil
res声明并且未使用
同样的问题:
if body, err := ioutil.ReadAll(res.Body); err != nil
身体已声明且未使用
答案 0 :(得分:1)
您已经在文件的顶部声明了两个变量,当您使用:=
时,您将重新声明它们。解决方案是使用=
代替:
if res, err = http.Get("url" + url.QueryEscape(query)); err != nil {