golang defer 语句匿名函数和具名函数的区别
来源:互联网 发布:蕙兰瑜伽 知乎 编辑:程序博客网 时间:2024/06/08 02:23
如果 defer 语句调用的是一个具名函数,那就要注意该具名函数的某个参数是不是引用了另外一个函数。假如 defer 语句为 defer A(B()) ,那么 defer 语句在注册的时候就会执行函数 B() , 但是函数 A() 的执行则延迟到 defer 外围函数即将退出时。
func (sm *SyncMap) Put(k, v string) {sm.lock.Lock();defer outerFunc(innerFunc())fmt.Println("start to put string***********")sm.hm[k] = v}func innerFunc() string {fmt.Println("this is innerFunc method")return "abc"}func outerFunc(v string) {fmt.Println("outerFunc method", v)}
如果 defer 语句调用的是一个匿名函数,那么匿名函数体内不管有什么复杂的逻辑,统统在 defer 外围函数即将退出时才执行。
func (sm *SyncMap) Put(k, v string) {sm.lock.Lock();defer func(){outerFunc(innerFunc())}()fmt.Println("start to put string***********")sm.hm[k] = v}func innerFunc() string {fmt.Println("this is innerFunc method")return "abc"}func outerFunc(v string) {fmt.Println("outerFunc method", v)}
0 0
- golang defer 语句匿名函数和具名函数的区别
- 具名函数和匿名函数
- golang基础-函数是变量、自定义type、命名返回值、可变参、defer、匿名
- 关于Go的闭包、匿名函数和defer的结合使用案例分析
- golang匿名函数和闭包
- golang 匿名函数用法
- JavaScript匿名、具名函数与立即执行函数IIFE详解
- 匿名函数和闭包的区别
- golang 函数以及函数和方法的区别
- golang 函数以及函数和方法的区别
- golang匿名函数(闭包)
- golang 内置函数new() 和struct{} 初始化的区别
- golang的闭包和普通函数调用区别
- golang的defer详解
- defer和async的区别
- defer和async的区别
- defer和async的区别
- defer和async的区别
- Swift-Initialization 学习简记
- read-only="true"
- Unity使用MD5加密
- Linux学习总结(28)——Linux主机加固
- sync 数据同步
- golang defer 语句匿名函数和具名函数的区别
- 浅谈ListView和RecyclerView
- Ajax技术
- MVC 向页面传值方式
- yield 改写遍历目录方法,内存使用好低啊
- SpringMVCController介绍及常用注解
- TCP/IP、Http、Socket的区别
- c#上位机实现八路液位监测
- 俄罗斯方块之二授课计划总体规划