@12 But in go you:
a) Lack generics
b) Lack any of the functional patterns
c) Lack pattern matching
d) Are using a lot of the patterns for programming that are common in the C-derived world.
So you end up with code that is extremely verbose and contains a lot of if-else-if-else-if-else calls.
Which even for someone who prefers to avoid try-catch blocks in languages with good semantics for it makes me _really_ twitchy ^^;;
@12 Oh, and one more note on this, in the languages with operator overloading this becomes downright _clean_. It becomes something like:
RunSomething >>| do_something_with_result >>| do_another_thing >>= deal_with_errors |> add_callback
Now it can even be concurrent and still nice and clean, with no changes to the code.
Which is why a lot of people like this pattern, but it does involve a different way of thinking, and I'd argue its absence from go is keenly felt.