Hacker News new | ask | show | jobs
by TillE 5023 days ago
Conceptually that makes sense, but having to explicitly check the type of the return value every time is just hideous.
1 comments

Uhm, then don't code in Go?
You can ignore errors in Go by assigning them to _. You can't if your return value is sometimes an Error.
You could implement something like lvalue pattern matching, if you wanted to.

Assuming you construct tagged unions like so:

    Valid 123
    Error "Error message"
You could pattern match on the left side of an assignment like so:

    Valid foo = dosomething()
    use(foo)
Which would extract the wrapped value into 'foo' if the union's tag was 'Valid', or aborted/panicked/did something else somewhat sane if the value didn't match.
If my return value is an Exception, I handle it in a catch block.