迹忆客 专注技术分享

当前位置:主页 > 学无止境 > 编程语言 >

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

作者:迹忆客 最近更新:2022/01/10 浏览次数:

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

  • 将函数作为参数
  • 返回一个函数作为结果

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

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

package main

import (  
    "fmt"
)

func simple(a func(a, b int) int) {  
    fmt.Println(a(60, 7))
}

func main() {  
    f := func(a, b int) int {
        return a + b
    }
    simple(f)
}

运行示例

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

从其他函数返回函数

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

package main

import (  
    "fmt"
)

func simple() func(a, b int) int {  
    f := func(a, b int) int {
        return a + b
    }
    return f
}

func main() {  
    s := simple()
    fmt.Println(s(60, 7))
}

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

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

除非注明转载,本站文章均为原创或翻译,欢迎转载,转载请以链接形式注明出处

本文地址:

迹忆客

专注技术分享,项目实战分享!

技术宅 乐于分享 7年编程经验
社交账号
  • https://www.github.com/onmpw
  • qq:1244347461

热门文章

教程更新

热门标签

Go