hatpear.go
func (e PanicError) Format(s fmt.State, verb rune) {
	switch verb {
	case 's':
		io.WriteString(s, e.Error())
	case 'v':
		io.WriteString(s, e.Error())
		for _, f := range e.stack {
			io.WriteString(s, "\n")
			if s.Flag('+') {
				fmt.Fprintf(s, "%s\n\t", f.Function)
			}
			fmt.Fprintf(s, "%s:%d", f.File, f.Line)
		}
	}
}
func (e PanicError) Format(s fmt.State, verb rune) {
	switch verb {
	case 's':
		io.WriteString(s, e.Error())
	case 'v':
		io.WriteString(s, e.Error())
		for _, f := range e.stack {
			io.WriteString(s, "\n")
			if s.Flag('+') {
				fmt.Fprintf(s, "%s\n\t", f.Function)
			}
			fmt.Fprintf(s, "%s:%d", f.File, f.Line)
		}
	}
}
// Format formats the error optionally including the stack trace.
//
//   %s    the error message
//   %v    the error message and the source file and line number for each stack frame
//
// Format accepts the following flags:
//
//   %+v   the error message, and the function, file, and line for each stack frame