Go 高阶函数(Higher-Order 函数)

在 wiki 中高阶函数的定义是至少执行以下一项函数

  • 将函数作为参数

  • 返回一个函数作为结果

针对以上两种场景,我们来看一些简单的例子。

将函数作为参数传递给其他函数

package main

import (

"fmt"

)

funcsimple(a func(a, b int)int) {

fmt.Println(a(60, 7))

}

funcmain() {

f := func(a, b int)int {

return a + b

}

simple(f)

}

运行示例

在上面的例子中,我们定义了一个 simple 函数,它接受一个函数作为参数,作为参数的这个函数同时接收两个 int 参数并返回一个 int 作为参数。 在 main 函数中。 我们创建了一个匿名函数 f,然后调用 simple 并将 f 作为参数传递给它。 该程序输出结果为 67 。

从其他函数返回函数

现在我们重写上面的程序并从 simple 函数返回一个函数。

package main

import (

"fmt"

)

funcsimple()func(a, b int)int {

f := func(a, b int)int {

return a + b

}

return f

}

funcmain() {

s := simple()

fmt.Println(s(60, 7))

}

在上面的程序中,simple 函数返回一个函数,该函数接受两个 int 参数并返回一个 int 参数。

在main函数中,我们一开始就调用 simple函数。 将 simple 的返回值赋给变量 s。 我们调用 s 并传递两个 int 参数。 该程序输出 67。

本文转载自:迹忆客(https://www.jiyik.com)

以上是 Go 高阶函数(Higher-Order 函数) 的全部内容, 来源链接: utcz.com/z/290259.html

回到顶部