C のようなプログラミング言語では、static キーワードを使用してローカル変数を静的として定義し、関数呼び出し間で値を保持できるようにすることができます。 。 Go でも同様のメカニズムを利用できますか?
クロージャの使用
Go では、クロージャは、外側のスコープで定義された変数にアクセスできる関数リテラルです。これらの変数はクロージャとそれを囲んでいる関数の間で共有され、アクセス可能な限り存続します。この動作は、他の言語の静的ローカル変数に似ています。
func main() { x := 1 y := func() { fmt.Println("x:", x) x++ } for i := 0; i < 10; i++ { y() } }
この例では、変数 x は main 関数内で宣言され、クロージャ y 内でアクセスされます。クロージャは x の値を変更でき、これらの変更はその後の y 呼び出しでも保持されます。
このアプローチは、static のような明示的な修飾子を必要とせずに、静的ローカル変数と同様の機能を提供します。永続的な状態でローカル変数を定義できるため、さまざまなプログラミング シナリオにとって価値のあるツールになります。
以上がGo クロージャは静的ローカル変数の機能を提供しますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。