當前位置: 首頁>>編程示例 >>用法及示例精選 >>正文


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。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。