Skip to content

Comment on Discussion: Reduce error handling boilerplate in Golang using '?'parent

Comments

Where I've found `?` super helpful in JS/TS and now miss it the most in Python is dealing with nested data structures.

``` if (foo.bar?.baz?.[5]?.bazinga?.value) ```

Is so much nicer than

``` if foo.bar and foo.bar.baz and foo.bar.baz[5] and foo.bar.baz[5].bazinga and foo.bar.baz[5].bazinga.value ```

I honestly don't care which one of those is falsy, my logic is the same either way.

This enables you to ergonomically pass around meaningful domain-oriented objects, which is nice.

Edit: looks like optional chaining is a separate proposal – https://github.com/golang/go/issues/42847

Yes, same experience. As someone who learned on python then got deep into Typsecript, this was a major bummer when returning to python.

Its funny because when I was a beginner in both I strongly preferred python syntax. I thought it was much simpler.

As I have pointed in in my other comment, you can use following syntax in python, ugly but better than multiple and (I don't use python anymore)

    if dict.get('key', {}).get('key-nested',{}).get....:

Even less pretty for getattr. And then you have a rude awakening about the difference between the missing default behavior of these two functions.

You can use following syntax in python, ugly but better than multiple and (I don't use python anymore)

    if dict.get('key', {}).get('key-nested',{}).get....:
AboutSource Built by g1lg1l

Hackerly is an independent reader for Hacker News, built on the public HN API. Not affiliated with Y Combinator.