我正在尝试处理特定的错误,但我对这种行为感到惊讶.
例子:
如果我使用
if err == errors.New("something"){}`
Run Code Online (Sandbox Code Playgroud)
它会返回true,即使err是nil.
如果我使用
if err.String() == "something"`
Run Code Online (Sandbox Code Playgroud)
它吓坏了err的nil.
我真的很期待
err == errors.New("something")`
Run Code Online (Sandbox Code Playgroud)
工作,我不知道为什么它会返回true.
更多代码:
以下是一些澄清问题的代码(Play):
package main
import "fmt"
import "errors"
func main() {
e := errors.New("error")
//I'm expecting this to return true
if e == errors.New("error") {
fmt.Println("Hello, playground")
}
}
Run Code Online (Sandbox Code Playgroud)
你可以做什么:
err.Error():if err != nil && err.Error() == "something"以下是第二个解决方案的示例:
package my_package
var ErrSmth = errors.New("something")
func f() error {
return ErrSmth
}
Run Code Online (Sandbox Code Playgroud)
package main
import "my_package"
func main() {
err := f()
if err == my_package.ErrSmth {
// Do something
}
}
Run Code Online (Sandbox Code Playgroud)
第二种解决方案是使用io包处理特定错误的方式.
| 归档时间: |
|
| 查看次数: |
526 次 |
| 最近记录: |