The errors package located at github.com/pkg/errors is a drop in replacement for the standard Go errors package. In addition, it provides some very useful functionality for wrapping and handling errors. The typed and declared errors in the preceding recipe are a good example--they can be useful to add additional information to an error, but wrapping it in the standard way will change its type and break type assertion:
// this wont work if you wrapped it
// in a standard way. i.e.
// fmt.Errorf("custom error: %s", err.Error())
if err == Package.ErrorNamed{
//handle this error in a specific way
}
This recipe will demonstrate how to use the pkg/errors package to add annotation to errors throughout your code.