type Frame … // pc returns the program counter for this frame; // multiple frames may have the same PC value. func (f Frame) pc() uintptr { … } // file returns the full path to the file that contains the // function for this Frame's pc. func (f Frame) file() string { … } // line returns the line number of source code of the // function for this Frame's pc. func (f Frame) line() int { … } // name returns the name of this function, if known. func (f Frame) name() string { … } // Format formats the frame according to the fmt.Formatter interface. // // %s source file // %d source line // %n function name // %v equivalent to %s:%d // // Format accepts flags that alter the printing of some verbs, as follows: // // %+s function name and path of source file relative to the compile time // GOPATH separated by \n\t (<funcname>\n\t<path>) // %+v equivalent to %+s:%d func (f Frame) Format(s fmt.State, verb rune) { … } // MarshalText formats a stacktrace Frame as a text string. The output is the // same as that of fmt.Sprintf("%+v", f), but without newlines or tabs. func (f Frame) MarshalText() ([]byte, error) { … } type StackTrace … // Format formats the stack of Frames according to the fmt.Formatter interface. // // %s lists source files for each Frame in the stack // %v lists the source file and line number for each Frame in the stack // // Format accepts flags that alter the printing of some verbs, as follows: // // %+v Prints filename, function, and line number for each Frame in the stack. func (st StackTrace) Format(s fmt.State, verb rune) { … } // formatSlice will format this StackTrace into the given buffer as a slice of // Frame, only valid when called with '%s' or '%v'. func (st StackTrace) formatSlice(s fmt.State, verb rune) { … } type stack … func (s *stack) Format(st fmt.State, verb rune) { … } func (s *stack) StackTrace() StackTrace { … } func callers() *stack { … } // funcname removes the path prefix component of a function's name reported by func.Name(). func funcname(name string) string { … }