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