Go defer
Posted staff
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Go defer相关的知识,希望对你有一定的参考价值。
defer 用在函数中
把它后面的语句延迟到函数即将返回的时候执行
如果有多个defer语句,函数结束时会先执行后面放进去的
用于关闭文件操作,关闭数据库连接,断开socket等
defer执行时间的图
1.返回值赋值 2.真正的RET返回
如果有defer,会在第1、2步之间执行
无聊的笔试题
func f1() int { //这里没有x,下面修改的返回值不是这里的x := 5defer func() {x++}()return x //返回5}
func f2() (x int) { //这里有x,修改的是这里的defer func() {x++}()return 5 //返回6}
func f3() (y int) { //有y,下面只要不修改y就动不了返回值x := 5defer func() {x++}()return x //返回5}func f4() (x int) { //有x,但是x++修改的是副本defer func(x int) {x++}(x)return 5 //返回5}func main() {fmt.Println(f1())fmt.Println(f2())fmt.Println(f3())fmt.Println(f4())}
以上是关于Go defer的主要内容,如果未能解决你的问题,请参考以下文章