# README
stack
Package stack implements utilities to capture, manipulate, and format call stacks. It provides a simpler API than package runtime.
The implementation takes care of the minutia and special cases of interpreting the program counter (pc) values returned by runtime.Callers.
Versioning
Package stack publishes releases via semver compatible Git tags prefixed with a single 'v'. The master branch always contains the latest release. The develop branch contains unreleased commits.
Formatting
Package stack's types implement fmt.Formatter, which provides a simple and flexible way to declaratively configure formatting when used with logging or error tracking packages.
func DoTheThing() {
c := stack.Caller(0)
log.Print(c) // "source.go:10"
log.Printf("%+v", c) // "pkg/path/source.go:10"
log.Printf("%n", c) // "DoTheThing"
s := stack.Trace().TrimRuntime()
log.Print(s) // "[source.go:15 caller.go:42 main.go:14]"
}
See the docs for all of the supported formatting options.
# Functions
Caller returns a Call from the stack of the current goroutine.
Convenience wrapper around runtime.Callers().
Trace returns a CallStack for the current goroutine with element 0 identifying the calling function.
TraceFrom creates a CallStack from the given program counters (as generated by runtime.Callers).
# Variables
ErrNoFunc means that the Call has a nil *runtime.Func.
# Type aliases
CallStack records a sequence of function invocations from a goroutine stack.