There's some temptation to think that terse==readable, but in practice this rarely extends beyond the simplest cases.
There's some temptation to think that terse==readable, but in practice this rarely extends beyond the simplest cases.
The real issues (IMO) with Go error handling are the clunky `errors.Is()` and `errors.As()` functions for catching specific error values and types respectively as well as annotating errors to get the requisite context (this may already have a solution which just hasn't yet become idiomatic across the ecosystem). In the meanwhile, I just wrap errors with extra context which isn't super satisfying but largely does the trick, e.g., `return fmt.Errorf("writing to database: %w", err)`. Rust seems to have similar problems with respect to different patterns and libraries for error handling, despite having a standard Result type.
A quick glance at any array language (APL, J, K, Q, etc.) confirms this. ;)