Go is spectacular in every way except the actual language itself
@h top of the line:
Go has everything except a good language.
@privateger 100% with you on the first paragraph - that's a bad practice, for sure, and I agree that it should be discouraged.
I need a bit more insight to understand the 2nd para, though. How does returning an error _let_ you do those things, in a way that you cannot (note - "cannot", not "don't, in practice") do with thrown exceptions?
(If the claim is actually "both approaches have equal maximal specificity, but explicit per-function error-handling promotes better practice", then I buy it!)