码迷,mamicode.com
首页 > 其他好文 > 详细

Go defer

时间:2020-07-01 23:50:25      阅读:68      评论:0      收藏:0      [点我收藏+]

标签:函数   执行   多个   数据库   文件   src   img   ++   结束   

defer  用在函数中

把它后面的语句延迟到函数即将返回的时候执行
如果有多个defer语句,函数结束时会先执行后面放进去的
用于关闭文件操作,关闭数据库连接,断开socket等


defer执行时间的图

技术图片

 

 


1.返回值赋值 2.真正的RET返回
如果有defer,会在第1、2步之间执行

 

 

无聊的笔试题

func f1() int { //这里没有x,下面修改的返回值不是这里的
    x := 5
    defer func() {
        x++  
    }()
    return x //返回5
}

func f2() (x int) { //这里有x,修改的是这里的
    defer func() {
        x++
    }()
    return 5  //返回6
}

func f3() (y int) { //有y,下面只要不修改y就动不了返回值
    x := 5
    defer 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

标签:函数   执行   多个   数据库   文件   src   img   ++   结束   

原文地址:https://www.cnblogs.com/staff/p/13222304.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!