defer 被调用时机

defer 被调用时机

  • 代码测试
package main

import(
	"fmt"
)

func main(){
	deferOpp()
	deferOppP(8)
        a:=deferOppP1()
        fmt.Prinltn(a)
}
//1、没有参数,没有看到明显效果
func deferOpp(){
	defer fmt.Println("最后执行")
	fmt.Println("开始执行")
	return
}

//2、有参数,可以明显的看到效果
func deferOppP(a int){
	defer func(){
		a++
		fmt.Println(a)
	}()
	fmt.Println(a)
	return
}

//不同:defer可以读取有名返回值。
func deferOppP1()(a int){
	defer func(){
		a++
		fmt.Println(a)
	}()
	fmt.Println(a)
	return a
}

  • 运行效果
这里开始执行
这里应该最后执行
8
9
1
posted @ 2019-09-16 09:23  Myuniverse  阅读(255)  评论(0编辑  收藏  举报