4 ms·
As someone who has spent 9 years working on Go: - Self managed thread pool, Go routines are transposed onto threads. - Channels for thread synchronization. Th
by cqiDFbfRUggaQph 3y ago
As someone who has spent 9 years working on Go:
- Self managed thread pool, Go routines are transposed onto threads.
- Channels for thread synchronization. The Select block lets you efficiently block a routine until one of multiple channels return.
- Fast compile times, fast execution.
- Type safety and garbage collection.
- Modern types like slices. You only have to check for nils when you explicitly use pointers. len([]byte(nil)) doesn't panic.
- First class Unicode support.
- Best date/time library I've used (sorry Python but you need timezones).
- Builtin tooling for testing, benchmarking, standard formatting and dependency management.
- Best package manager I've used. They force you do things their way but it's worth it IMO. All packages have a canonical URL that's explicitly referenced in code.
- Supply chain protection for dependencies.
- Dependencies are statically linked for easy distribution.
- Great standard library with no breaking changes over the last 10 years. (Pretty sure)
At the end of the day though, use whatever works for your style. C++ isn't going anywhere. But I am noticing a lot of people talking about the importance of type safety when Rust development was allowed in the Linux kernel.