1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51
| package main
import ( "fmt" "runtime/debug" )
type trace struct{}
type user struct { name string }
func main() { slice := make([]string, 2, 4) var t trace t.TestStack(slice, "hello", 10) }
func TestStack(slice []string, str string, i int) { panic("Want stack trace") }
func (t *trace) TestStack(slice []string, str string, i int) (u *user, err error) { fmt.Printf("Receiver Address: %p\n", t) panic("Want stack trace") }
func Example(b1, b2, b3 bool, i uint8) { defer func() { err := recover() if err != nil { stackStr := string(debug.Stack()) fmt.Println(stackStr) } }() panic("Want stack trace") }
|