程序开发 · 2023年9月22日

Go defer 语句执行顺序:为什么代码输出 221?

今日不肯埋头,明日何以抬头!每日一句努力自己的话哈哈~哈喽,今天我将给大家带来一篇
《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函数遵循后进先出的原则,因此执行顺序为:

  1. func(a int) { fmt.println(a) }
  2. fmt.println(a)
  3. 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连接数据库时遇到“库名错误”如何解决?