Earlier quoted context omitted.
Exceptions are bad outside the "your computer just started burning" cases, but Go has replaced them with something even worse, "multiple return values". So instead of some imagined return of "int or throw Exception" you now have "(int, error)", which basically means that the result of a function call can be any of these four options: - ( value, no error) - (no value, error) - ( value, error) - (no value, no error) An…
The last case is rarely seen in Go (at least not in the standard library). Accepting for the moment that Go has no exceptions and and error returns are the way to go, the first two cases make sense. The third case ( value, error) is actually useful in several scenarios. For instance, considering you're writing bytes to a stream that fail partway. The value is the number of bytes return so far and the error is the err…
This is not an problem, because a single return value is _not_ everything one has.