クロージャは、入れ子関数内で定義された関数で、戻り値が返された後の変数も含め、入れ子関数のスコープ内の変数にアクセスできます。これらは、フィボナッチ数列の項を生成するなど、柔軟で再利用可能なコードを作成するために使用されます。 フィボナッチ項を生成するクロージャ関数を定義します。クロージャ関数は 2 つの変数をキャプチャして、フィボナッチ数列の最初の 2 つの項を保存します。クロージャー関数を呼び出して、新しいフィボナッチ項を順番に計算して返します。クロージャ関数は、キャプチャされた変数の値を時間の経過とともに変更することができ、それによってフィボナッチ数列の後続の項が生成されます。
Go 言語関数のクロージャ
クロージャとは何ですか?
クロージャは、入れ子関数の内部で定義された関数です。入れ子関数が返された場合でも、入れ子関数のスコープ内の変数にアクセスできます。
コード例:
func outer(multiplier int) func(x int) int { return func(x int) int { return multiplier * x } } func main() { doubler := outer(2) result := doubler(5) fmt.Println(result) // 输出:10 }
上の例では、関数 outer
はネストされた関数 func(x int) int# を返します。 ##。ネストされた関数は、
outer 関数が返された場合でも、
outer 関数内の変数
multiplier にアクセスできます。
実践例:
クロージャを使用すると、柔軟で再利用可能なコードを作成できます。たとえば、フィボナッチ数列の項を生成するクロージャを作成できます。func fibonacci() func() int { a, b := 0, 1 return func() int { a, b = b, a+b return a } } func main() { f := fibonacci() for i := 0; i < 10; i++ { fmt.Println(f()) // 打印斐波那契序列的前 10 项 } }
その他の点:
以上がgolang機能の終了の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。