| FWIW, I’m a happy Go user who agrees with the direction of your misgivings, if not completely the magnitude. There is a lot of hacky code in the code generation space, which is why I think the Go team continues to chase generics rather than give it up completely. A lack of optional types is IMO a wart, that’s tapered over with nil and reflection, but would have benefitted from being a first class piece of the language. I like to imagine this finds its way into Go 2, but I’m not very hopeful. The rest of your items I view as very nice things that I don’t particularly miss. They’re quirks that are reflective of a minimalist design. At least, that’s the excuse I make. Result types are interesting and valuable, but add a layer of complexity to a program’s legibility that is understandably desirable to omit, especially when the idiom of returning an error type is so culturally ingrained. I miss immutables and “modern” iterators, but I can personally live without them. Conditional compilation is kind of antithetical to Go’s design and I don’t miss it too much. I think most Gophers who have been around the language a while would agree with most of what we’ve said, at least the ones I know. |