Go Lang错误处理问题/误解?

时间:2018-02-27 10:16:54

标签: go

好的,我正在使用以下代码,

lst = [np.zeros((10, 2)), np.zeros((20, 2)),
       np.zeros((15, 2)), np.zeros((12, 2))]
result = sorted(lst, key=lambda x: x.shape[0] * x.shape[1])[-1]

现在,当我尝试运行此代码时,出现以下错误,

err := r.ParseForm()
if err != nil {
    log.Panic(err)
}

var user User

err := decoder.Decode(&user, r.PostForm)
if err != nil {
    log.Panic(err)
}

现在我知道这是由于使用相同的变量,在这种情况下是no new variables on left side of := 但是我看到很多例子,这是其他开发人员如何处理错误处理的?

我一直使用的方式就是使用errerr1,这样我就可以构建代码了。

我一直在讨论文档但是有很多东西需要考虑并且必须错过err2变量如何被重用,或者我完全误解了什么?

谢谢,

2 个答案:

答案 0 :(得分:2)

你可以对待你的错误就像这样。

if err := r.ParseForm(); err != nil {
    log.Panic(err)
}

var user User
if err := decoder.Decode(&user, r.PostForm); err != nil {
    log.Panic(err)
}

或全球定义error

var err error
err = r.ParseForm()

答案 1 :(得分:1)

您重新声明了变量err。您经常看到的是较短的错误处理语法:

if err := DoSomething(); err != nil {
    // handle
}

在控制结构和for循环中声明的变量仅对该块可见。因此,上面声明的err只能在if块中看到。