Updating the Go Memory Model
&gt; To serialize access, protect the data with channel operations or other synchronization primitives such as those in the sync and sync&#x2F;atomic packages.<p>&gt; If you must read the rest of this document to understand the behavior of your program, you are being too clever. Don&#x27;t be clever.<p>I&#x27;m surprised that they list sync&#x2F;atomic as a thing to use. As I recall its behaviour isn&#x27;t even defined--I followed a long mailing list thread trying to find out that ended with &#x27;these are the behaviours we know we want but it&#x27;s too complicated to document so let&#x27;s just keep this to ourselves&#x27;.