Go uses CSP concurrency, which is distinct from the Actor model. They're often conflated since the difference is small, but the distinction is relevant here because it directly addresses your complaint. Namely, synchronization is much easier in CSP since communication is synchronous, so you don't have to build additional abstractions for syncing on top of your asynchronous message passing.