20.Go-头等函数

Go 语言拥有 头等函数(First-class Function) ,头等函数是指函数可以被当作变量一样使用,即函数可以被当作参数传递给其他函数,可以作为另一个函数的返回值,还可以被赋值给一个变量。

20.1 把函数赋值给变量

下面是一个把函数赋值给变量的例子,该函数没有名称,调用该函数的唯一方法就是使用赋值后的变量。

package main

import "fmt"

func main() {
    bookFunc := func() {
        fmt.Println("《Go语言极简一本通》")
    }
    bookFunc()
    fmt.Printf("bookFunc 的类型是 %T\n", bookFunc)
}

运行该程序输出如下:

《Go语言极简一本通》
bookFunc 的类型是 func()

20.2 传递一个函数作为参数

我们把 接收一个或多个函数作为参数 或者 返回值也是一个函数 的函数称为 高阶函数(Hiher-order Function)

下面的是把函数作为参数,并传递给其他函数的例子:

package main

import "fmt"

// printRes 接收一个函数参数
func printRes(show func(author, book string) string) {
    fmt.Println(show("欢喜", "《Go语言极简一本通》"))
}

func main() {
    // 创建匿名函数
    f := func(x, y string) string {
       return x + y
    }
    // 把匿名函数作为参数传入另一个函数
    printRes(f)
}

20.3 返回一个函数

下面的是函数返回一个函数的例子:

package main

import "fmt"

// show 返回一个函数
func show() func(author, book string) string {
    return func(x, y string) string {
        return x + y
    }
}

func main() {
    // 变量获取返回的函数
    s := show()
    // 调用返回的函数
    fmt.Println(s("欢喜", "《Go语言极简一本通》"))
}

20.4 闭包

闭包(Closure) 是匿名函数的一个特例。当一个匿名函数所访问的变量定义在函数体的外部时,就称这样的匿名函数为闭包。

package main

import "fmt"

func main() {
    x := 100
    func() {
        fmt.Println(x)
    }()
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值