GOLANG空指针崩溃时堆栈消失和解决方案
原文: https://gocn.io/article/351 在 错误处理 这个文章中, tkk 提出了空指针时堆栈消失的问题,看下面的 例子 : package main func main() { run() // line 4 } func run() { causedPanic() } func causedPanic() { //defer func() {}() // line 10 //panic("Panic from user") // line 11 var p * byte *p = 0 // line 13 } 这个程序崩溃时,打印的竟然是: panic : runtime error: invalid memory address or nil pointer dereference goroutine 1 [running]: main .main () /tmp/sandbox277759147/main .go : 4 + 0x4 神奇的是,把第10行的defer打开,变成 这样 : func causedPanic() { defer func () {}() // line 10 //panic("Panic from user") // line 11 var p * byte *p = 0 // line 13 } 堆栈神奇的回来了: