Go でのローカル変数の状態の保持: 静的なアプローチ
C とは異なり、Go には組み込みの "static" キーワードがありません関数呼び出し全体で値を保持するローカル変数を定義します。幸いなことに、Go にはクロージャというエレガントな代替手段があります。
クロージャ: 状態を保持する鍵
Go の関数リテラルはクロージャです。関数リテラルが、囲んでいる関数内で定義された変数を参照すると、それらの変数は共有され、関数の外部からアクセスできるようになります。重要なのは、クロージャがスコープ内にある限り、これらの変数は存続することです。
例: クロージャによる状態の保持
ここでは、クロージャを使用して静的な機能を実現する方法を示します。 Closure:
func main() { x := 1 y := func() { fmt.Println("x:", x) x++ } for i := 0; i < 10; i++ { y() } }
この例では、変数 x は y 関数定義の外で宣言されていますが、関数定義内でアクセスできます。閉鎖。 y を呼び出すたびに x がインクリメントされ、クロージャの有効期間のおかげで変数は呼び出し間でその状態を保持します。
以上がGo で静的なローカル変数の永続性を実現するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。