Go 関数クロージャを使用して変数をキャプチャするにはどうすればよいですか?キャプチャする変数を含む関数パラメータを定義します。関数本体内で、キャプチャした変数を使用します。例: カウンタ クロージャ キャッシュ クロージャ クロージャは Go で変数をキャプチャし、柔軟で再利用可能なコードを作成するために使用されます。
Go 関数クロージャを使用して変数をキャプチャする方法
クロージャは、自由変数を含む関数であり、自由変数関数内にあります。外部で定義されていますが、関数内でアクセスできます。 Go では、次の手順に従ってクロージャを作成できます。
サンプル コード:
package main import "fmt" func main() { x := 10 f := func() { // x 是一个自由变量,可以在 f 内访问 fmt.Println(x) } // 运行闭包 f() }
上記の例では、f
関数は変数 x## をキャプチャするクロージャです。 #。
f が呼び出されると、
x の値 (
10) が出力されます。
その他の例:
カウンタ クロージャ: クロージャ関数が戻った場合でもループ カウンタを作成します。カウント。
func counter(start int) func() int { x := start return func() int { x++ return x } }
キャッシュ クロージャ: パフォーマンスを向上させるために結果がキャッシュされる関数を作成します。
func cachingCalc(expensiveComputation func(int) int) func(int) int { cache := make(map[int]int) return func(x int) int { if v, ok := cache[x]; ok { return v } v = expensiveComputation(x) cache[x] = v return v } }
以上がgolang 関数クロージャを使用して変数をキャプチャする方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。