Data Race Patterns in Go
> 2. Slices are confusing types that create subtle and hard-to-diagnose data racesThe "Slices" example is just nasty!  Like, this is just damning for Go's promise of "_relatively_ easy and carefree concurrency".Think about it for a second or two,>> The reference to the slice was resized in the middle of an append operation from another async routine.What exactly happens in these cases?  How can I trust myself, as a fallible human being, to reason about such cases when I'm trying to efficiently roll up a list of results. :-/Compared to every other remotely mainstream language, perhaps even C++, these are extremely subtle and sharp.. nigh, razor sharp edges.  Yuck.One big takeaway is this harsh realization: Golang guarantees are scant more than what is offered by pure, relatively naïve and unadulterated BASH shell programming.  I still will use it, but with newfound fear.As a multi-hundred-kloc-authoring-gopher: I love Go, and this article is killing me inside.  Go appears extremely sloppy at the edges of the envelope and language boundaries, moreso than even I had ever realized prior to now.Full-disclosure: I am disgusted by the company that is Uber, but I'm grateful to the talented folks who've cast a light on this cesspool region of Golang.  Thank you!p.s. inane aside: I never would've guessed that in 2022, Java would start looking more and more appealing in new ways.  Until now I've been more or less "all-in" on Go for years.