Go言語とは、Googleが開発した新しいプログラミング言語です。 当サイトではこの新しい言語についての情報を集約していきます。 このサイトの更新が滞っており、情報が古くなっておりますのでご注意ください。 はじめに このGo言語のメモリモデルでは、あるゴルーチンによって変数へ書き込まれた値を、他のゴルーチンから読み込む際に、書き込まれた値を参照できることを保証するための条件を規定します。 前事象 ひとつのゴルーチン内でのメモリへの読み書きは、プログラムで指定した実行順と同じように振舞わなくてはなりません。つまり、コンパイラとプロセッサが、ゴルーチン内の読み書きの順番を入れ替えられるのは、入れ替えによって言語仕様で定められたゴルーチンの振舞いが変更されないときだけです。この順番入れ替えの影響で、あるゴルーチン内では守られていた実行順が、他のゴルーチンからは違って見えることがあります。たとえば