カスタムエラー
内部に任意の状態を含めることができる
code:custom-error.go
// 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)
}
}
}