golang:defer执行时机

Posted live4m

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了golang:defer执行时机相关的知识,希望对你有一定的参考价值。


return 不是原子操作.

没有defer时的函数return:
1.函数返回值赋值
2.ret指令

有defer时的函数return:
1.函数返回值赋值
2.执行defer
3.ret指令
func f1() int {		//返回值为5
	x := 5
	defer func() {
		x++
	}()
	return x
}
func f2() (x int) {	//返回值为6
	defer func() {
		x++
	}()
	return 5
}

以上是关于golang:defer执行时机的主要内容,如果未能解决你的问题,请参考以下文章

Golang basic_leaming函数详解

Golang basic_leaming函数详解

golang:defer执行顺序

Golang基础defer执行顺序

Golang中defer的三个实战要点

golang 初体验 - 令人惊叹的语法 - defer.1