002_解析go语言中的回调函数

回调函数是一种特殊的函数写法,在很多场景中发挥广泛的作用。但是对于初学者来说,回调函数是比较头疼的一个东西,不太好懂,笔者研究了一番,以网上的一个例子详细说明一下

首先看一个代码示例(来源于网上)

package main

import "fmt"

type Callback func(x, y int) int

func main() {
	x, y := 1, 2
	fmt.Println(test(x, y, add))
}

//实现回调
func test(x, y int, callback Callback) int {
	return callback(x, y)
}

func add(x, y int) int {
	return x + y
}

此代码运行结果如下

3

  • 在上述例子中,函数test接收3个参数,前两个参数是int类型,第三个参数为函数类型,而返回值,为int,这个int的结果,其实是callback(x,y)的运行结果,但是callback(x,y)是在其它地方实现的,是被函数add(x,y)实现的。这就是回调
  • 逻辑如下:首先程序运行,要打印test(x,y,add)的结果,函数test接收了三个参数,第三个参数传入的是函数add,返回的是callback(x,y),其实返回的就是add(x,y)。而add(x,y),被另一个地方定义好了,返回的是x+y的值。所以最终,函数main的结果是打印出了x+y,也就是3

总结一下,Go是支持函数回调的,我们可以把函数A的名称作为参数传递给另外一个函数B,然后在别的地方实现这个函数A,这样就实现了函数回调

posted @ 2018-03-31 23:54  Joestar  阅读(1147)  评论(0编辑  收藏  举报