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

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

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,这样就实现了函数回调

最新文章

  1. 红黑树/B+树/AVL树
  2. DataTableToJson
  3. MySQL数据库学习笔记(十二)----开源工具DbUtils的使用(数据库的增删改查)
  4. iptraf:TCP/UDP网络监控工具
  5. 利用Web服务器网络打洞
  6. android学习笔记13——ExpandableListView
  7. Dubbo源码-Dubbo是如何随心所欲自定义XML标签的
  8. 【redis】-- springboot集成redis及使用
  9. git常用方法
  10. Koa源码分析(一) -- generator
  11. 下载中间件--随机IP代理以及随机User_Agent
  12. ECharts图表的小工具
  13. PLMN概念和应用设置
  14. Linux中设备号及设备文件【转】
  15. NET 下载共享文件
  16. python学习手册中的一些易忘的点(第4部分)
  17. HDU 1269 移动城堡 联通分量 Tarjan
  18. 前端福利之个性化设置table的td宽度(总结)
  19. Android AES加密工具类实现(基础回顾)
  20. poj 2828 buy Tickets 用线段树模拟带插入的队列

热门文章

  1. Flask 基础组件(一):基本使用
  2. mysql数据的增删改-内含经典面试题
  3. 集训作业 洛谷P1017 进制转换
  4. 波士顿动力狗 SPOT 权威购买指北
  5. element-ui设置级联选择器表单验证
  6. DP学习记录Ⅱ
  7. python-元类和使用元类实现简单的ORM
  8. MySQL(三)视图
  9. [转载]Android SDK 离线文档 (api 20)(升级至api 23)
  10. Lua学习入门(代码块)