Dave Chaney's new slides on Golang errors. TL;DR errors.New("foo") < pkg.ErrValue < err.(pkg.ErrType) < errors.Cause(err).(pkg.ErrType) I like the proposed https://github.com/pkg/errors API. It reminds me @maciej's https://github.com/goware/errorx, but feels a bit simpler - and I like that you can Wrap and annotate multiple layers of errors, which is even better than a nice stack trace.