errors.Is 函数和 errors.As 函数的作用不同。
errors.Is 函数用于检查错误值是否与给定目标错误值匹配。如果错误值属于目标错误值的一种,即属于同一错误列表,或者是由目标错误值引发的错误,则 returns true。它的格式为:
func Is(err, target error) bool
例如,以下代码假定函数返回 err,如果该错误是 MyError 类型,则返回“oh no”
if errors.Is(err, MyError) {
return "oh no"
}
errors.As 函数用于将错误值转换为其他类型的错误值,并将其分配给一个新的变量。如果错误类型匹配目标类型,则返回 true。它的格式为:
func As(err error, target interface{}) bool
例如,以下代码假设一个函数返回了 err,且我们需要将其转换为 MyError 类型:
var e MyError
if errors.As(err, &e) {
// 此时 e 就是 MyError 类型
}
总之,errors.Is 用于检查错误是否与目标值匹配,而 errors.As 则将错误转换为不同的错误类型。