Go errors.Is函数 和 errors.As函数的区别

4 min read

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 则将错误转换为不同的错误类型。