// io/fs package
type PathError struct {
	Op   string
	Path string
	Err  error
}
 
// io/fs package使用側
package main
 
import (
	"errors"
	"fmt"
	"io/fs"
	"os"
)
 
func main() {
	if _, err := os.Open("non-existing"); err != nil {
		var pathError *fs.PathError
		// As関数でerrに第二引数のカスタムエラーが含まれていればerrの値がインスタンスに代入される
		if errors.As(err, &pathError) {
			fmt.Println("Failed at path:", pathError.Path)
		} else {
			fmt.Println(err)
		}
	}
 
}

参考