ホームページ  >  記事  >  バックエンド開発  >  golang 関数クロージャを使用して変数をキャプチャする方法

golang 関数クロージャを使用して変数をキャプチャする方法

PHPz
PHPzオリジナル
2024-04-23 11:42:01558ブラウズ

Go 関数クロージャを使用して変数をキャプチャするにはどうすればよいですか?キャプチャする変数を含む関数パラメータを定義します。関数本体内で、キャプチャした変数を使用します。例: カウンタ クロージャ キャッシュ クロージャ クロージャは Go で変数をキャプチャし、柔軟で再利用可能なコードを作成するために使用されます。

golang 関数クロージャを使用して変数をキャプチャする方法

Go 関数クロージャを使用して変数をキャプチャする方法

クロージャは、自由変数を含む関数であり、自由変数関数内にあります。外部で定義されていますが、関数内でアクセスできます。 Go では、次の手順に従ってクロージャを作成できます。

  1. キャプチャする変数を引数に含む関数を定義します。
  2. 関数本体では、キャプチャした変数を使用します。

サンプル コード:

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
      }
    }

クロージャは、変数をキャプチャし、柔軟で再利用可能なコードを作成するための Go の強力なツールです。

以上がgolang 関数クロージャを使用して変数をキャプチャする方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。