Go-scope-rules
Go-スコープルール
プログラミングのスコープとは、定義された変数が存在し、それを超えると変数にアクセスできないプログラムの領域です。 Goプログラミング言語で変数を宣言できる場所は3つあります-
関数またはブロック内(*ローカル*変数)
すべての関数の外側(*グローバル*変数)
関数パラメーターの定義( formal パラメーター)
ローカル変数
関数またはブロック内で宣言される変数は、ローカル変数と呼ばれます。 それらは、その関数またはコードブロック内にあるステートメントでのみ使用できます。 ローカル変数は、自身の外部の関数には認識されません。 次の例では、ローカル変数を使用しています。 ここで、変数a、b、およびcはすべてmain()関数に対してローカルです。
上記のコードをコンパイルして実行すると、次の結果が生成されます-
グローバル変数
グローバル変数は、関数の外側、通常はプログラムの上部で定義されます。 グローバル変数は、プログラムの存続期間を通じてその値を保持し、プログラムに定義された関数のいずれかからアクセスできます。
グローバル変数には、どの関数からもアクセスできます。 つまり、グローバル変数は、宣言後にプログラム全体で使用できます。 次の例では、グローバル変数とローカル変数の両方を使用します-
上記のコードをコンパイルして実行すると、次の結果が生成されます-
プログラムはローカル変数とグローバル変数に同じ名前を付けることができますが、関数内のローカル変数の値が優先されます。 たとえば-
上記のコードをコンパイルして実行すると、次の結果が生成されます-
正式なパラメーター
仮パラメータは、その関数内のローカル変数として扱われ、グローバル変数よりも優先されます。 たとえば-
上記のコードをコンパイルして実行すると、次の結果が生成されます-
ローカル変数とグローバル変数の初期化
ローカル変数とグローバル変数は、デフォルト値の0に初期化されます。一方、ポインターはnilに初期化されます。
Data Type | Initial Default Value |
---|---|
int | 0 |
float32 | 0 |
pointer | nil |