Go is built for grug brained programmers like me.
grug brain developer not so smart, but grug brain developer program many long year and learn some things although mostly still confused
Not a hard question. It’s sum types! (Or enums, tagged unions, or whatever you want to call them).
While you’re at it, with sum types, you can replace this stupid nil with an optional type. Also, you can replace the stupid error handling with an either/result type. Then you can add a keyword to return early if it’s left/err. Then you have Swift or Rust.
To be fair, there’s huge demand for a Swift-like language in the space Go operates, since nobody will ever adopt Swift outside of Apple use cases. Rust is excellent, but garbage collection is not awful at all for most Go use cases. I think Go designers made a mistake by not introducing sum types sooner since there are many ergonomic issues that could be solved with them.
This may lead people to argue for JVM-based languages, but Go seems like a leaner and nicer package overall and compiling to static binaries so simply is still a major winning feature. That and I think Go still has performance advantages over JVM and C#.
In many ways I think Swift is better than Go as a language, but we effectively will never have that as an option people freely choose to use so it would be nice for Go to close some ground where it can and where it makes sense to do so. Go is what people already want to use as a starting point, so it makes sense for it to try and modernize a tad.
While you’re at it, with sum types, you can replace this stupid nil with an optional type. Also, you can replace the stupid error handling with an either/result type. Then you can add a keyword to return early if it’s left/err. Then you have Swift or Rust.
To be fair, there’s huge demand for a Swift-like language in the space Go operates, since nobody will ever adopt Swift outside of Apple use cases. Rust is excellent, but garbage collection is not awful at all for most Go use cases. I think Go designers made a mistake by not introducing sum types sooner since there are many ergonomic issues that could be solved with them.
This may lead people to argue for JVM-based languages, but Go seems like a leaner and nicer package overall and compiling to static binaries so simply is still a major winning feature. That and I think Go still has performance advantages over JVM and C#.
In many ways I think Swift is better than Go as a language, but we effectively will never have that as an option people freely choose to use so it would be nice for Go to close some ground where it can and where it makes sense to do so. Go is what people already want to use as a starting point, so it makes sense for it to try and modernize a tad.