标签:函数 执行 多个 数据库 文件 src img ++ 结束
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())}
标签:函数 执行 多个 数据库 文件 src img ++ 结束
原文地址:https://www.cnblogs.com/staff/p/13222304.html