No, there isn't, but you can check if the value exists: x, ok := m[k] if !ok { panic("does not exist") }
You can also wrap that with methods, if you want to avoid the extra check. I disagree with you that panicking on a non-existent key is better - either in general, or in the majority of cases. Personally, I don't think I encountered many use-cases where the zero-value wasn't the perfect thing to use. I'm not saying your use-case doesn't exist or even that it's rare, just that I don't think you can generalize from your experience here. On Thu, Aug 13, 2020 at 8:36 PM Joe Marty <joe.ma...@smartersorting.com> wrote: > I'm very new to Go - apologies in advance if I'm missing something: > > I find it frustrating that there's no way to create a map that does *not* > automatically return a zero value for undefined key access by default. > > I love the fact that Go doesn't return "nil" for this use case (I love > Ruby, but I don't think they got that quite right), but returning a default > value is worse! It would make so much more sense if it would just panic > when accessing an undefined key. I'm not a Python guy, but I think this is > something Python got right. > > Creating a map that returns some default value when you access an > undefined key should be a special kind of map, or a special argument to > initializing the map (which Ruby does allow). In Go, is there even any way > to create a map that panics when you access an undefined key? > > -Joe > > *Connect with us here:* LinkedIn > <https://www.linkedin.com/company/smarter-sorting/>, Facebook > <https://www.facebook.com/smartersorting>, Instagram > <https://www.instagram.com/smartersorting/>, Twitter > <https://twitter.com/SmarterSorting>, BuiltInAustin > <https://www.builtinaustin.com/company/smarter-sorting> > > [image: https://www.smartersorting.com/] <https://www.smartersorting.com/> > <https://www.builtinaustin.com/2019/02/05/50-austin-startups-watch-2019?utm_source=PE&utm_medium=organic_social&utm_campaign=50_STW_PE&utm_term=article&utm_content=austin> > > -- > You received this message because you are subscribed to the Google Groups > "golang-nuts" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to golang-nuts+unsubscr...@googlegroups.com. > To view this discussion on the web visit > https://groups.google.com/d/msgid/golang-nuts/f53377a0-ddc1-4842-ac7a-a796d85b7077n%40googlegroups.com > <https://groups.google.com/d/msgid/golang-nuts/f53377a0-ddc1-4842-ac7a-a796d85b7077n%40googlegroups.com?utm_medium=email&utm_source=footer> > . > -- You received this message because you are subscribed to the Google Groups "golang-nuts" group. To unsubscribe from this group and stop receiving emails from it, send an email to golang-nuts+unsubscr...@googlegroups.com. To view this discussion on the web visit https://groups.google.com/d/msgid/golang-nuts/CAEkBMfEc5MO-FS1esLDJGoKRUq0tneJ5v6GR5T8JQMDFgjx9pQ%40mail.gmail.com.