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


GO As用法及代码示例


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

用法:

func As(err error, target any) bool

As 找到 err 链中与 target 匹配的第一个错误,如果找到,则将 target 设置为该错误值并返回 true。否则,它返回 false。

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

如果错误的具体值可分配给目标指向的值,或者错误具有方法 As(interface{}) bool 使得 As(target) 返回 true,则错误匹配目标。在后一种情况下,As 方法负责设置目标。

错误类型可能提供 As 方法,因此可以将其视为不同的错误类型。

如果 target 不是指向实现错误的类型或任何接口类型的非零指针,则会出现Panics。

例子:

package main

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

func main() {
	if _, err := os.Open("non-existing"); err != nil {
		var pathError *fs.PathError
		if errors.As(err, &pathError) {
			fmt.Println("Failed at path:", pathError.Path)
		} else {
			fmt.Println(err)
		}
	}

}

输出:

Failed at path: non-existing

相关用法


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