首页 > 其他 > 详细

Go defer

时间:2020-07-02 00:23:18      阅读:80      评论:0      收藏:0      [点我收藏+]

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

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

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!