1、defer是延迟调用关键字,只能在函数内部使用
2、总是在main函数结束前调用(和init用法相对)
3、如果有多个defer 遵循先进后出的原则
4、和匿名函数同时使用时,如果匿名函数带有参数,则先把参数传进去,最后调用

例如:

package main

import "fmt"
func Test() {
	defer fmt.Println("111111")             //最后执行
	defer fmt.Println("222222")             //其次
	defer fmt.Priiota_test.gontln("333333") //最先执行这个

}

func main() {

	a := 1
	b := 2
	defer fmt.Println(a, b) //1,2 先把参数传进去,然后执行后面的程序,最后在main函数结束前执行这个
	defer func(a, b int) {
		fmt.Printf("a1=%d,b1=%d\n", a, b)
	}(a, b) //先把参数传进去,最后按顺序执行defer语句
	a = 4
	b = 6
	fmt.Println("a=", a, "b=", b)
	Test()
}

运行结果:

最新文章

  1. Android程序中--不能改变的事情
  2. UML大战需求分析——阅读笔记06
  3. hibernate中表关系为多对多时,如何只删除中间表数据
  4. 解决ORA-14450:试图访问已经在使用的事务处理临时表
  5. BSON 1.0版本规范(翻译)
  6. jqury.jqzoom插件--放大镜
  7. priority_queue C++
  8. Android反向工程需要的几个软件
  9. SpotMini末端控制策略
  10. 学习AJAX(二)
  11. 天坑 之 java web servlet+jsp项目 配置后 404 (MyEclipse转eclipse)
  12. 笔试题引出float数据的存储方式的深究
  13. 201521123011 《Java程序设计》 第二周学习总结
  14. Java中栈的应用,括号匹配
  15. UVA11846-Finding Seats Again(DFS)
  16. 洛谷P4705 玩游戏 [生成函数,NTT]
  17. 虚存管理页面置换算法 — FIFO和RUL算法模拟实现
  18. springmvc后台接前端的参数,数组,集合,复杂对象等
  19. OpenStack 创建虚机过程简要汇总
  20. git命令--git checkout 之 撤销提交到暂存区的更改

热门文章

  1. jProfiler远程连接Linux监控jvm、tomcat运行状态
  2. TypeScript环境安装,以及配置idea开发环境
  3. tomcat配置启动文件
  4. codeforces 347A - Difference Row
  5. Laravel 命令行工具之多线程同步大批量数据 DB连接混乱 解决方案
  6. web图形验证码逻辑
  7. Zabbix在 windows下监控网卡
  8. ByteBuf
  9. Python 与数据库交互
  10. Linux基础文件打包