GOLANG小白一枚,正在不断学习积累知识,现将学习到的知识记录一下,也是将我的所得分享给大家!而今天这篇文章《Go 中 defer 的执行顺序:后进先出,但参数值是如何确定的?》带大家来了解一下##content_title##,希望对大家的知识积累有所帮助,从而弥补自己的不足,助力实战开发!,
,
,
go中defer的执行顺序,在go语言中,defer是一种延迟执行函数的机制。对于下面的代码,大家可以思考一下其打印结果:,
答案:,同为新手,个人理解:,今天关于《Go 中 defer 的执行顺序:后进先出,但参数值是如何确定的?》的内容介绍就到此结束,如果有什么疑问或者建议,可以在GOLANG公众号下多多回复交流;文中若有不正之处,也希望回复留言以告知!,
其次,defer注册延迟执行函数时,函数所需的参数值必须确定。,
首先,defer遵循后进先出的原则,因此打印顺序为3、2、1。,
逐行分析代码执行过程:
- 初始化 a 为 1。
- 依次注册3个defer函数,其中函数需要参数的值在注册时就确定。
- 执行 a++,使 a 为 2。
-
返回前按序执行defer函数:
- 函数3:传入实参 a=1,在注册时分配内存存储形参 a’。函数执行时,打印 1。
- 函数2:同上。
- 函数1:无参函数,注册时不分配内存。函数执行时,查找参数 a(此时为 2),打印 2。
,GOLANG小白一枚,正在不断学习积累知识,现将学习到的知识记录一下,也是将我的所得分享给大家!而今天这篇文章《Go 中 defer 的执行顺序:后进先出,但参数值是如何确定的?》带大家来了解一下##content_title##,希望对大家的知识积累有所帮助,从而弥补自己的不足,助力实战开发!,
当前位置: > > > > Go 中 defer 的执行顺序:后进先出,但参数值是如何确定的?
Go 中 defer 的执行顺序:后进先出,但参数值是如何确定的?
2024-10-27 17:00:54
0浏览
收藏
GOLANG小白一枚,正在不断学习积累知识,现将学习到的知识记录一下,也是将我的所得分享给大家!而今天这篇文章《Go 中 defer 的执行顺序:后进先出,但参数值是如何确定的?》带大家来了解一下##content_title##,希望对大家的知识积累有所帮助,从而弥补自己的不足,助力实战开发!
go中defer的执行顺序
在go语言中,defer是一种延迟执行函数的机制。对于下面的代码,大家可以思考一下其打印结果:
func main() { a := 1 defer fmt.Println(a) defer func(s int) { fmt.Println(s) }(a) defer func() { fmt.Println("normal defer") }() a++ }
答案:
同为新手,个人理解:
- 首先,defer遵循后进先出的原则,因此打印顺序为3、2、1。
- 其次,defer注册延迟执行函数时,函数所需的参数值必须确定。
-
逐行分析代码执行过程:
- 初始化 a 为 1。
- 依次注册3个defer函数,其中函数需要参数的值在注册时就确定。
- 执行 a++,使 a 为 2。
-
返回前按序执行defer函数:
- 函数3:传入实参 a=1,在注册时分配内存存储形参 a’。函数执行时,打印 1。
- 函数2:同上。
- 函数1:无参函数,注册时不分配内存。函数执行时,查找参数 a(此时为 2),打印 2。
今天关于《Go 中 defer 的执行顺序:后进先出,但参数值是如何确定的?》的内容介绍就到此结束,如果有什么疑问或者建议,可以在GOLANG公众号下多多回复交流;文中若有不正之处,也希望回复留言以告知!
- PHP函数如何接收对象参数?
- CSS 动画中如何实现突变效果?