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

Go Lang错误处理问题/误解?,go,Go,好的,我使用下面的代码 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 := 现在我知道这是由于使用了相同的变量,在本例中

好的,我使用下面的代码

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 :=
现在我知道这是由于使用了相同的变量,在本例中是
err
,但是我看到了很多例子,其他开发人员是如何处理错误的

我一直使用的方法就是使用
err1
err2
来构建代码

我已经看过了文档,但是有很多东西需要理解,一定是错过了
err
变量是如何被重用的,或者我完全误解了什么


谢谢,

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

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

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

您可以这样对待您的错误

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

var user User
if err := decoder.Decode(&user, r.PostForm); err != nil {
    log.Panic(err)
}
或者全局定义您的
错误

var err error
err = r.ParseForm()

err:=
->
err=
。“或者我完全误解了什么?”是的,你似乎不明白
:=
=
之间的区别,我只是尝试使用err=并得到以下->main.go:70:2:undefined:err第二个简单的答案是=。err已在第一个中声明。如果说在那一行上有一个新变量,那么它会像newVar,err:=(现在在左边有一个新变量)。看看整个错误,包括行号,它应该会变得更明显。可能是重复的谢谢-我不知道为什么我的问题被标记下来。我不是很擅长读博士论文,你给我的一个简单的答案很有帮助。如果能帮助我,请考虑接受我的回答:对不起,忘了你必须这么做。