一.概述
此处所说的回调函数和java中有些相似,利用回调函数,能够实现多态,反复调用,提高代码的可用性
二.函数的类型
func minus(a, b int) int {
return a - b
}
//函数也是一种数据类型,通过type给一个函数类型起名
//FuncType它是一个函数类型 函数类型名为FuncType
type FuncType func(int, int) int //没有函数名字,没有{}
func main() {
var result int
result = add(1, 1) //传统方式进行调用
fmt.Println("result=", result)
// 声明一个函数类型的变量,变量名为FuncType1
var result1 FuncType
result1 = add //是变量就可以赋值
result = result1(3, 4) //等价于add(3,4)
fmt.Println("result=", result)
result1 = minus
result = result1(62, 42)
fmt.Println("result=", result)
}
三.回调函数
回调函数 函数有一个参数是函数类型,这个函数就是回调函数
package main
import "fmt"
//定义一个函数类型
type FuncType func(int, int) int
// 实现加法
func add(a, b int) int {
return a + b
}
func minus(a, b int) int {
return a - b
}
func multi(a, b int) int {
return a * b
}
func divide(a, b int) (ret int) {
ret = a / b
return
}
// 回调函数 函数有一个参数是函数类型,这个函数就是回调函数
// 计算器,可以进行四则运算
// 多态,多种形态,调用同一个接口,可以实现不同的表现,加减乘除
func Calc(a, b int, ftest FuncType) (result int) {
fmt.Println("Calc")
result = ftest(a, b) //此函数没有被实现
return
}
func main() {
a := Calc(1, 3, divide)
fmt.Printf("result=%d\n", a)
}