网站排名优化效果,信息服务平台怎么赚钱,霸州做网站的,徐州吸引力网络科技有限公司定义
当前函数返回之前执行传入函数的一个关键字
执行时间
当前函数返回前执行
常用于
关闭文件描述符关闭数据库链接解锁资源
原理
参考#xff1a;https://draveness.me/golang/docs/part2-foundation/ch05-keyword/golang-defer/
后调用的 defer 函数会先执行…定义
当前函数返回之前执行传入函数的一个关键字
执行时间
当前函数返回前执行
常用于
关闭文件描述符关闭数据库链接解锁资源
原理
参考https://draveness.me/golang/docs/part2-foundation/ch05-keyword/golang-defer/
后调用的 defer 函数会先执行
后调用的 defer 函数会被追加到 Goroutine _defer 链表的最前面运行 runtime._defer 时是从前到后依次执行
函数的参数会被预先计算
调用 runtime.deferproc 函数创建新的延迟调用时就会立刻拷贝函数的参数函数的参数不会等到真正执行时计算
Go 语言中所有的函数调用都是传值的
参考https://draveness.me/golang/docs/part2-foundation/ch05-keyword/golang-defer/
pannic之后会执行defer吗
会
panic之后有序退出会执行defer链表参考https://ieevee.com/tech/2017/11/23/go-panic.html后进先出
defer执行
package mainimport fmtfunc main() {fmt.Println(main : ,test())}func test() int {a : 1defer func() {afmt.Println(defer,a)}()fmt.Println(a)return jjjj(a)
}func jjjj(a *int) int {*areturn *a
}