如何在if-else语句中初始化错误类型

huangapple go评论90阅读模式
英文:

How to initialize error type in if-else

问题

在下面的代码片段中,我该如何初始化一个错误变量?

err := nil                // 无法编译,显示“use of untyped nil”
if xxx {
    err = funcA()
} else {
    err = funcB()
}
if err != nil {
    panic(err)
}

如上所示,err将在if-else块中使用。我想使用一个变量来获取结果,但是在这里我该如何初始化err。谢谢!

英文:

In the code snippet below, how do I initialize an error variable?

err := nil                // can not compile, show "use of untyped nil"
if xxx {
    err = funcA()
} else {
    err = funcB()
}
if err != nil {
    panic(err)
}

As you can see above, err will be used in the if-else blocks. I want to use one variable to get the result, but how do I initialize err here. Thanks!

答案1

得分: 62

你可以通过声明变量来创建一个零值错误(将为nil)。

var err error
if xxx {
    err = funcA()
} else {
    err = funcB()
}

这是一个常见的习惯用法,在很多代码中都会看到。

英文:

You can create a zero-valued error (which will be nil) by declaring the variable.

var err error
if xxx {
    err = funcA()
} else {
    err = funcB()
}

It's a common idiom, and you'll see it in plenty of code.

答案2

得分: 6

这个看起来有点粗糙,但也是有效的:

err := *new(error)
英文:

This one looks a little hacky, but is valid too:

err := *new(error)

答案3

得分: 1

另一种简单的方法是:

err := error(nil)
英文:

Another way is simply:

err := error(nil)

huangapple
  • 本文由 发表于 2014年4月21日 15:50:24
  • 转载请务必保留本文链接:https://go.coder-hub.com/23193208.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定