The sharp edges in Go are when you try to use the built-in mechanisms that are supposed to replace data sharing - e.g. channels - only to discover the numerous footguns that abound there.
And then there's patently stupid design decisions like using raw slices as collections and the maybe-change-maybe-copy semantics of append() that don't make it easier to reason about shared data when it needs to be shared.
And then there's patently stupid design decisions like using raw slices as collections and the maybe-change-maybe-copy semantics of append() that don't make it easier to reason about shared data when it needs to be shared.