网站换皮肤了
golang defer在什么时候执行
时间:2019-12-18 18:30 浏览:86

摘要

详解golang中defer和return的执行顺序

注意

return后并不等于func退出

多个defer的执行顺序是后进先出

golang中,func支持多返回值,当return执行时会将各个返回值压入栈中,最后再退出func。而defer即在return执行完,func退出前执行。所以defer执行时可修改func返回值(不推荐这么做)。

例子

package main

import "fmt"

func test() (num int) {
	defer func() {
		fmt.Println("defer...")
		num++
	}()
	num = 10
	return
}

func test1() int {
	num := 10
	defer func() {
		fmt.Println("defer...")
		num++
	}()
	return num
}

func main() {
	fmt.Println(test())
	fmt.Println(test1())
}
defer...
11
defer...
10




如果这篇文章对你有所帮助,可以通过下边的“打赏”功能进行小额的打赏。

本网站部分内容来源于互联网,如有侵犯版权请来信告知,我们将立即处理。


来说两句吧