| What are you looking for in the 2 languages?
Here are some of my thoughts: Golang * Development speed: Golang wins by far. It's closer to Python in that regard, but with strong typing. * Very nice multi-threading via Go routines and channels. Impressive semantics in simple syntax, requiring no synchronization mechanism on the user side. * Large garbage collector penalty. Rust * Complete language with build system, crate, docs hosting. * A lot more performance compared to Golang, on par with C++. * Doctests (!). * Slow to learn, slow to compile (probably not a deal-breaker, especially if you focus on microservices). Concerning what would be a good usecase for Rust vs Golang, check this out: https://discord.com/blog/why-discord-is-switching-from-go-to... |
Except for all the times they are required and Go doesn’t tell you: https://eng.uber.com/data-race-patterns-in-go/
Go’s fundamental semantics are standard not-safe shared-memory multi threading. It provides an mpmc queue as a built-in out of necessity (since no generics originally, which would have made for an awkward situation), but really the only thing that’s notable about it is `select`, not `go` or `chan`.
In in some ways `go` is even a downgrade from other languages: you can’t get a handle on the goroutine and thus have to muck around with side-channels to even know that a subroutine has terminated let alone get its result.