Go言語でクロージャ関数を使い方は何ですか?

Go言語でのクロージャ関数とは、関数がその外部スコープの変数にアクセスできることを指します。クロージャ関数は、変数を引数や戻り値として使用して、特定の機能を実現するために使用されます。

以下是一个简单的クロージャ関数の例です:

func main() {
    // 定义匿名函数并赋值给变量add
    add := func(x, y int) int {
        return x + y
    }

    // 调用闭包函数
    result := add(3, 5)
    fmt.Println(result) // 输出:8
}

上記の例では、変数に匿名関数を定義して、その関数が外部スコープの変数xとyにアクセスし、その合計を返すようにしました。add関数を呼び出し、引数として3と5を渡すことで、結果として8が得られました。

クロージャー関数は、関数ファクトリーを実装するためにも使用できます。つまり、関数を返す関数です。以下は例です。

func adder() func(int) int {
    sum := 0
    return func(x int) int {
        sum += x
        return sum
    }
}

func main() {
    // 调用函数工厂,返回一个闭包函数
    a := adder()

    // 调用闭包函数
    fmt.Println(a(1)) // 输出:1
    fmt.Println(a(2)) // 输出:3
    fmt.Println(a(3)) // 输出:6
}

上記の例では、adder関数を定義し、クロージャ関数を返すようにしました。クロージャ関数内の変数sumは、呼び出し毎にその状態を保持します。adder関数を呼び出すことでクロージャ関数aを取得し、それぞれの関数aを異なる引数で呼び出し、最終的に結果を出力します。a関数を呼び出すたびに、変数sumは以前の累積結果を保持していることがわかります。

bannerAds