gpt4 book ai didi

go - 特定错误处理的不明确行为

转载 作者:IT王子 更新时间:2023-10-29 01:26:42 25 4
gpt4 key购买 nike

我正在尝试处理特定错误,但我对这种行为感到惊讶。

示例:

如果我用

if err == errors.New("something"){}` 

它返回 true,即使 errnil

如果我用

if err.String() == "something"` 

errnil 时,它会发生 panic 。

我真的很期待

err == errors.New("something")` 

工作,我不确定为什么它返回 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")
}
}

最佳答案

你可以做什么:

  • 比较 err.Error():if err != nil && err.Error() == "something"
  • 为你的错误使用全局变量

这是第二种解决方案的示例:

package my_package

var ErrSmth = errors.New("something")

func f() error {
return ErrSmth
}

package main

import "my_package"

func main() {
err := f()
if err == my_package.ErrSmth {
// Do something
}
}

第二种解决方案是使用 io 处理特定错误的方式。包。

关于go - 特定错误处理的不明确行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25040780/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com