当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


GO Is用法及代码示例


GO语言"errors"包中"Is"函数的用法及代码示例。

用法:

func Is(err, target error) bool

报告 err 链中的任何错误是否与目标匹配。

该链由 err 本身和通过重复调用 Unwrap 获得的错误序列组成。

如果错误与目标相等,或者如果它实现方法 Is(error) bool 使得 Is(target) 返回 true,则认为错误与目标匹配。

错误类型可能提供 Is 方法,因此可以将其视为与现有错误等效。例如,如果 MyError 定义

func (m MyError) Is(target error) bool { return target == fs.ErrExist }

然后 Is(MyError{}, fs.ErrExist) 返回 true。有关标准库中的示例,请参见 syscall.Errno.Is。 Is 方法应该只对 err 和目标进行浅层次的比较,而不是在其中任何一个上调用 Unwrap。

例子:

package main

import (
	"errors"
	"fmt"
	"io/fs"
	"os"
)

func main() {
	if _, err := os.Open("non-existing"); err != nil {
		if errors.Is(err, fs.ErrNotExist) {
			fmt.Println("file does not exist")
		} else {
			fmt.Println(err)
		}
	}

}

输出:

file does not exist

相关用法


注:本文由纯净天空筛选整理自golang.google.cn大神的英文原创作品 Is。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。