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函数了。
原文链接:https://blog.csdn.net/niekunhit/article/details/121637104