今日不肯埋头,明日何以抬头!每日一句努力自己的话哈哈~哈喽,今天我将给大家带来一篇
《Go defer 语句执行顺序:为什么代码输出 221?》,主要内容是讲解
等等,感兴趣的朋友可以收藏或者有更好的建议在评论提出,我都会认真看的!大家一起进步,一起学习!,
,
go打印defer分析,在以下代码中:,程序的打印结果为:,
理解打印顺序,这个问题涉及到go语言中defer关键字的使用。defer指延迟执行的意思,即在当前函数返回前执行defer后面的函数。,defwer函数遵循后进先出的原则,因此执行顺序为:,
理解参数传递,defwer注册要延迟执行的函数时,该函数所有的参数都需要确定其值。因此在代码中,a++操作是在defer函数注册之后执行的。,在第一个defer函数中,func(a int) { fmt.println(a) },参数a在注册时被赋值为此时的实参a=1。随后执行输出1。,在第二个defer函数中,fmt.println(a),参数a也同样在注册时被赋值为此时的实参a=1。,在第三个defer函数中,无参函数,执行时先上寻找参数a(此时为2)。,本篇关于《Go defer 语句执行顺序:为什么代码输出 221?》的介绍就到此结束啦,但是学无止境,想要了解学习更多关于GOLANG的相关知识,请关注GOLANG公众号!,go打印defer分析,今日不肯埋头,明日何以抬头!每日一句努力自己的话哈哈~哈喽,今天我将给大家带来一篇
《Go defer 语句执行顺序:为什么代码输出 221?》,主要内容是讲解
等等,感兴趣的朋友可以收藏或者有更好的建议在评论提出,我都会认真看的!大家一起进步,一起学习!,
当前位置: > > > > Go defer 语句执行顺序:为什么代码输出 221?
Go defer 语句执行顺序:为什么代码输出 221?
2024-11-03 11:54:44
0浏览
收藏
今日不肯埋头,明日何以抬头!每日一句努力自己的话哈哈~哈喽,今天我将给大家带来一篇《Go defer 语句执行顺序:为什么代码输出 221?》,主要内容是讲解等等,感兴趣的朋友可以收藏或者有更好的建议在评论提出,我都会认真看的!大家一起进步,一起学习!
go打印defer分析
在以下代码中:
package main import "fmt" func main() { a := 1 defer fmt.println(a) a++ defer fmt.println(a) defer func(a int) { fmt.println(a) }(a) }
程序的打印结果为:
2 2 1
理解打印顺序
这个问题涉及到go语言中defer关键字的使用。defer指延迟执行的意思,即在当前函数返回前执行defer后面的函数。
defwer函数遵循后进先出的原则,因此执行顺序为:
- func(a int) { fmt.println(a) }
- fmt.println(a)
- fmt.println(a)
理解参数传递
defwer注册要延迟执行的函数时,该函数所有的参数都需要确定其值。因此在代码中,a++操作是在defer函数注册之后执行的。
在第一个defer函数中,func(a int) { fmt.println(a) },参数a在注册时被赋值为此时的实参a=1。随后执行输出1。
在第二个defer函数中,fmt.println(a),参数a也同样在注册时被赋值为此时的实参a=1。
在第三个defer函数中,无参函数,执行时先上寻找参数a(此时为2)。
本篇关于《Go defer 语句执行顺序:为什么代码输出 221?》的介绍就到此结束啦,但是学无止境,想要了解学习更多关于GOLANG的相关知识,请关注GOLANG公众号!
- 移动端日期选择如何实现左右滑动切换效果?
- JDBC连接数据库时遇到“库名错误”如何解决?