Go言語で関数を関数で変換する方法
関数を他の関数の引数として渡したり、戻り値として返したりすることで Go 言語では関数を操作できます。
- 関数を引数として別の関数へ渡す: ある関数を引数として別の関数に渡すには、呼び出される関数が渡された関数を扱えることが必要です。
func operate(fn func(int) int, num int) int {
return fn(num)
}
func double(n int) int {
return n * 2
}
func main() {
result := operate(double, 5)
fmt.Println(result) // 输出: 10
}
- 関数を返す関数:関数のなかで他の関数を返すことができるため、返された関数は別の場所で呼び出すことができます。
func generateMultiplier(factor int) func(int) int {
return func(n int) int {
return n * factor
}
}
func main() {
double := generateMultiplier(2)
result := double(5)
fmt.Println(result) // 输出: 10
}
上記2通りの方法で、関数の改造と拡張ができ、関数に高い柔軟性と再利用性を与えることができます。