如何进行go语言中error类型值的对比
时间: 2023-07-08 17:04:33 浏览: 90
在 Go 语言中,可以使用 `errors.Is` 和 `errors.As` 函数进行 error 类型值的对比。
`errors.Is` 函数会遍历错误链,判断错误链中是否包含目标错误。如果包含,则返回 true,否则返回 false。
例如:
```go
import (
"errors"
)
var ErrNotFound = errors.New("not found")
func main() {
err := find()
if errors.Is(err, ErrNotFound) {
// 处理找不到的情况
}
}
func find() error {
// ...
return ErrNotFound
}
```
`errors.As` 函数用于将错误类型值转换为指定类型,并判断是否转换成功。如果转换成功,则返回 true,否则返回 false。
例如:
```go
import (
"errors"
)
type MyError struct {
Code int
Message string
}
func main() {
err := find()
var myErr *MyError
if errors.As(err, &myErr) {
// 处理 MyError 类型的错误
}
}
func find() error {
// ...
return &MyError{Code: 100, Message: "not found"}
}
```
以上是 Go 语言中对比 error 类型值的方法,希望能对你有所帮助。
阅读全文