Well panic = very serious problem, what do you expect? You can catch them and handle them but it does not means the system is stable.
Also defer() will run even if there is a panic.
Also defer() will run even if there is a panic.
Even the Go standard library itself panics (and recovers) when you try to e.g. json-encode a NaN, which doesn't seem like something that should make the system unstable.
This is a direct result of Go's lacking error handling, and would not be necessary if they'd have learned from C++ and Java's mistakes, instead of just repeating them.