Go | 回调函数使用
Go | 回调函数使用
例子
package callback
type CallBack func(int, int) int
func CallBackDemo(i, j int, call CallBack) int {
result := call(i, j)
return result
}
func Add(i, j int) int {
return i + j
}
package callback
import "testing"
func TestCallBackDemo(t *testing.T) {
res := CallBackDemo(1, 3, Add)
t.Log(res)
}
在上述例子中,函数CallBackDemo接收3个参数,前两个参数是int类型,第三个参数为函数类型,而返回值,为int,这个int的结果,其实是call(x,y)的运行结果,但是call(x,y)是在其它地方实现的,是被函数Add(x,y)实现的。这就是回调
逻辑如下:首先程序运行,要打印CallBackDemo(x,y,Add)的结果,函数CallBackDemo接收了三个参数,第三个参数传入的是函数Add,返回的是call(x,y),其实返回的就是Add(x,y)。而Add(x,y),被另一个地方定义好了,返回的是x+y的值。所以最终,函数main的结果是打印出了x+y,也就是3