如何防范声明的变量并发现错误

时间:2017-03-08 15:17:45

标签: go

我有一个小问题,我知道为什么它存在,但无法找到它的解决方案。

如果发生错误,我会有一个不会被使用的变量,这会导致编译器错误。

代码:

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 
  

身体已声明且未使用

1 个答案:

答案 0 :(得分:1)

您已经在文件的顶部声明了两个变量,当您使用:=时,您将重新声明它们。解决方案是使用=代替:

if res, err = http.Get("url" + url.QueryEscape(query)); err != nil {