What Is the Difference Between errors.Is and errors.As

errors.Is checks for a specific error value, while errors.As extracts a custom error type to access its fields.

Use errors.Is to check if an error matches a specific sentinel value, and errors.As to extract a custom error type from a wrapped error chain.

if errors.Is(err, os.ErrNotExist) {
    // Handle specific error
}

if var errTarget *MyCustomError; errors.As(err, &errTarget) {
    // Access custom fields: errTarget.Code
}