Golang 模糊的 err 重新定义

4
为什么可以重新定义 "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个回答

8
与普通变量声明不同的是,短变量声明可以重新声明变量,前提是它们最初在同一块中(或者如果该块是函数体,则在参数列表中)以相同类型声明,并且至少有一个非空变量是新的。因此,重新声明只能出现在多变量短声明中。重新声明不会引入新变量;它只是给原始变量赋予新值。
参考链接:https://golang.org/ref/spec#Short_variable_declarations

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.")
}

-1

短变量声明主要用于临时声明变量,并且这些变量名称在后续程序中也可以使用。例如,“err”可以随时在后续程序中使用。 假设语言是Java,则必须为后续程序声明更多不同的变量名称。 但是在Golang中,短变量声明的工作方式类似于JavaScript中的“let”。 希望这可以帮助您。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接