Golang模棱两可的错误重新定义

时间:2017-04-13 08:57:10

标签: go definition

为什么重新定义 err变量?

err := ipdf.Open(source)
if err != nil {
    panic("Couldn't open pdf.")
}

payload, err := ioutil.ReadFile(other)
if err != nil {
    panic("Couldn't read other file.")
}

3 个答案:

答案 0 :(得分:6)

  

与常规变量声明不同,短变量声明可以重新声明变量,前提是它们最初在相同的块中声明(或者如果块是函数体,则参数列表)具有相同的类型,并且至少有一个非变量声明-blank变量是新的。因此,重新声明只能出现在多变量简短声明中。重新声明不会引入新变量;它只是为原始版本赋予了一个新值。

https://golang.org/ref/spec#Short_variable_declarations

答案 1 :(得分:0)

短变量声明主要用于必须声明变量以供临时使用,并且这些变量名称也可用于其他程序。例如,“err”可以在进一步的程序中随时使用。 让我们假设语言是java,你必须为进一步的程序声明更多不同的变量名。 但是在golang中,短变量声明在javascript中用作“let”。 希望这会有所帮助。

答案 2 :(得分:0)

我建议尽可能使用内联检查:

// local scope
if err := ipdf.Open(source); err != nil {
    panic("Couldn't open pdf.")
}

payload, err := ioutil.ReadFile(other)
if err != nil {
    panic("Couldn't read other file.")
}