func Add(a,b int) (result int) {return a + b}//可以通过type关键字给函数类型起名type FuncType func(int,int) int//使用func main(){//声明一个函数类型的变量var (foo FuncTyperesult int)foo = Addresult = foo(10,20) //等价于Add(10,20)fmt.Println("result = ",result)}
那么由此可知,在go语言里,函数也可以被命名为函数类型
函数类型配合回调函数就能实现多态的功能
exp:
//下面是实现一个相加的回调函数
//命名一个函数类型type FuncType func(int,int) int//创建一个可以实现"加、减、乘、除"的函数func Calc(a,b int,foo FuncType) (result int) {//如果成功执行此函数,打印一下fmt.Println("Calc")result = foo(a,b) //如果调用此函数,foo就相当于传入的那个函数了return}func Add(a,b int) int{//实现a+breturn a+b}func main(){result := Calc(1,1,Add)//此时Add函数就被作为参数传给Calc,内部就会把Add转为foofmt.Println("result = ",result)}//打印结果result = 2
