golang 中的type func()

go 语言中函数是一等公民,因此针对函数的使用也可以多种多样。在go语言中函数可以作为函数参数传递,也可以作为函数的返回值返回。

function type就是一种典型的应用。

关于function type 官方的定义如下

A function type denotes the set of all functions with the same parameter and result types.

字面意思就是有着相同的参数和返回结果的函数的合集

解释一下

type HandlerFunc func(name string)
上面的HandleFunc 是我们自定义的一个函数类型的变量,任何有相同参数的(name string) 函数都可以归为此类型的函数.下面两个函数 callback 和callback2都可以作为HandleFunc类型函数。

func callback(name string) {
fmt.Println(name)
}
func callback2(name string) {
fmt.Println("Hello" + name)
}
函数类型变量可以定义自己的方法,下面定义一个方法用来执行函数本身

func (f HandlerFunc) run(i string) {
f(i)
}
func SomeRun(f HandlerFunc, name string) {
f.run(name)
}
func main() {
f := HandlerFunc(callback)
SomeRun(f,"XiaoMing")
f2 := HandlerFunc(callback2)
SomeRun(f2,"XiaoHong")
}
运行结果

XiaoMing
HelloXiaoHong
前面讲过golang中函数为一等公民可以作为函数参数,SomeRun 函数的第一个参数就是一个函数。

代码中的HandlerFunc(callback) 就是将callback 函数转换成HadlerFunc 转换完成后就可以作为参数传入 SomeRun函数了。


————————————————
版权声明:本文为CSDN博主「NKCCDD」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/niekunhit/article/details/121637104

posted @ 2022-05-12 19:16  rincloud  阅读(215)  评论(0编辑  收藏  举报