Go の静的ローカル変数
予約語 static を使用してローカル変数を静的にできる C とは異なり、Go はサポートしていません静的ローカル変数。ただし、クロージャを使用して同様の機能を実現する別の方法が提供されます。
Go のクロージャ
Go のクロージャは、その関数で定義された変数を参照する関数リテラルです。周囲の機能。これらの変数は周囲の関数とクロージャの間で共有され、周囲の関数が戻った後でもアクセス可能なままになります。
クロージャを使用して静的ローカル変数をシミュレートする
静的ローカル変数をシミュレートするにはGo の変数を使用すると、共有変数にアクセスする関数とクロージャを定義できます。例:
func main() { x := 1 y := func() { fmt.Println("x:", x) x++ }
この例では、x は main 関数で定義された変数、y は x を参照する関数リテラルです。ステートメント x は、y が呼び出されるたびに x の値をインクリメントします。
クロージャーを使用することにより、x は y の呼び出し間でその値を維持できます。この動作は、C での静的ローカル変数の使用に似ています。
注:
共有変数がグローバル スコープ内にある必要はありません。クロージャが定義されている関数の外側の任意のレベルで定義できます。
以上がGo で静的ローカル変数をシミュレートするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。