# Functions
Asは、errのツリー内で最初にtargetに一致するエラーを検索し、 一致するエラーが見つかった場合、targetをそのエラー値に設定してtrueを返します。 それ以外の場合、falseを返します。
このツリーは、err自体と、その後に繰り返しUnwrap() errorまたはUnwrap() []errorメソッドを 呼び出すことで得られるエラーで構成されています。errが複数のエラーをラップしている場合、 Asはerrとその子の深さ優先探索を順に調べます。
エラーがターゲットに一致する場合、エラーの具体的な値がtargetが指す値に代入可能であるか、 またはエラーがAs(any) boolというメソッドを持ち、As(target)がtrueを返す場合です。 後者の場合、Asメソッドはtargetを設定する責任があります。
エラータイプは、異なるエラータイプであるかのように扱うことができるように、Asメソッドを提供する場合があります。
Asは、targetがエラーを実装する型または任意のインターフェース型の、 非nilポインタでない場合にパニックを引き起こします。.
Isは、errのツリー内の任意のエラーがtargetに一致するかどうかを報告します。
このツリーは、err自体と、その後に繰り返しUnwrap() errorまたはUnwrap() []errorメソッドを 呼び出すことで得られるエラーで構成されています。errが複数のエラーをラップしている場合、 Isはerrとその子の深さ優先探索を順に調べます。
ターゲットに一致するエラーは、そのターゲットに等しい場合、または 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] を呼び出さないようにする必要があります。.
Joinは、指定されたエラーをラップするエラーを返します。 nilエラー値は破棄されます。 errsのすべての値がnilの場合、Joinはnilを返します。 エラーは、errsの各要素のErrorメソッドを呼び出して得られた文字列を連結したもので、 各文字列の間に改行が挿入されたものとしてフォーマットされます。
Joinによって返されるnilでないエラーは、Unwrap() []errorメソッドを実装します。.
Newは、指定されたテキストをフォーマットするエラーを返します。 テキストが同じであっても、Newの各呼び出しは異なるエラー値を返します。.
Unwrapは、errの型にUnwrapメソッドが含まれている場合、 errのUnwrapメソッドを呼び出した結果を返します。 それ以外の場合、Unwrapはnilを返します。
Unwrapは、"Unwrap() error"形式のメソッドのみを呼び出します。 特に、Unwrapは [Join] によって返されたエラーをアンラップしません。.
# Variables
ErrUnsupportedは、サポートされていないため、要求された操作を実行できないことを示します。 たとえば、ハードリンクをサポートしていないファイルシステムを使用して [os.Link] を呼び出す場合。
関数やメソッドは、このエラーを返すべきではありません。 代わりに、適切な文脈を含むエラーを返すべきです。
errors.Is(err, errors.ErrUnsupported)
ErrUnsupportedを直接ラップするか、 [Is] メソッドを実装することによって、 サポートされていないことを示すエラーを返すことができます。
関数やメソッドは、このエラーをラップして返す場合があることを文書化する必要があります。.