package stacktrace import ( "errors" ) /* RootCause unwraps the original error that caused the current one. _, err := f() if perr, ok := stacktrace.RootCause(err).(*ParsingError); ok { showError(perr.Line, perr.Column, perr.Text) } */ func RootCause(err error) error { for { st, ok := err.(*stacktrace) if !ok { return err } if st.cause == nil { return errors.New(st.message) } err = st.cause } }