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は以前の累積結果を保持していることがわかります。