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

Jer*_*ain 14 go

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

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

如您所见,err将在if-else块中使用.我想使用一个变量来获得结果,但是我如何err在这里初始化.谢谢!

Pau*_*kin 26

您可以通过声明变量来创建零值错误(将为零).

var err error
if xxx {
    err = funcA()
} else {
    err = funcB()
}
Run Code Online (Sandbox Code Playgroud)

这是一个常见的习语,你会在很多代码中看到它.


nav*_*aid 6

这看起来有点老套,但也有效:

err := *new(error)
Run Code Online (Sandbox Code Playgroud)

  • 这是执行 for 循环时的有效方法,例如。```for val, err := value, *new(error); 错误!= nil && val > 0; val, err = doStuff() {} ``` (2认同)