This program has quite a lot of error checking in it, which is why I chose it. (To be honest, I just compared it with my last paid C++ project, and this had even more error checking, but that was some huge rambling thing from years ago I don't want to go through.)
I haven't written Go in years, but I think my argument is airtight.
Suppose I generate an exception at the bottom of my stack, and I actually handle it at the top, four levels up.
In Go, there will have to be three additional "if/return" statements to get that error code to the top. In most other languages there will be zero.
There is literally no other way to get that error code from the bottom of the stack to the top in Go. The "return" statement is the one and only way to pass things up the stack in Go. That's the whole point of not having exceptions!
(And three levels between throwing the exception and catching it is very conservative. I'm using an ORM underneath it, and often there are an additional six or more levels of stack trace from inside the ORM when I hit some sort of exception.)
Thanks for writing! I certainly learned some things.