A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 不二晨 金牌黑马   /  2018-12-18 16:49  /  2260 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

//defer用来推出前延迟操作,一个函数中可以有多个
//defer的执行顺序和栈的行为是一样的

package main

import "fmt"

func deferTest(x int) int{
        if(x==0){
                return 0
        }

        defer fmt.Printf("x=%d\n", x)
        //说明一个函数中可以有多个defer,defer的执行顺序跟栈的行为一样,先写后执行
        defer fmt.Printf("It's defer test.\n")

        //会先于defer执行
        fmt.Printf("x+1=%d\n", (x+1))
        return x+1
}

func main()  {
        //没有任何输出,因为defer写在了第一个return的后面,不会执行到
        deferTest(0)

        //一旦执行了defer,肯定会在函数退出之前执行的
        deferTest(1)
}

---------------------
【转载】仅作分享,侵删
作者:davidsu33
原文:https://blog.csdn.net/davidsu33/article/details/52877006


2 个回复

倒序浏览
奈斯
回复 使用道具 举报
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马