go defer看到你头晕的操作
Posted issac-fan
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了go defer看到你头晕的操作相关的知识,希望对你有一定的参考价值。
defer的执行时机
要理解defer的玩法,就要知道他的执行时机,他的执行流程是这样的:
go 语言中函数return 不是原子性的,他是分两步的
第一步 :返回值赋值
defer 执行
第二步 :真正的return 返回
函数中如果存在 defer 那么defer执行的时机是在第一步与第二步之间
看到这里,我们一起来做几个demo
接受挑战?如果你已经很熟悉defer
func f1() int {
x := 5
defer func() {
x++
}()
return x
}
func f2() (x int) {
defer func() {
x++
}()
return 5
}
func f3() (y int) {
x := 5
defer func() {
x++
}()
return x
}
func f4() (x int) {
defer func(x int) {
x++
}(x)
return 5
}
func f5() (x int) {
defer func (x int) int {
x++
return x
}(x)
return 5
}
func f6()(x int) {
defer func (x *int) {
(*x)++
}(&x)
return 5
}
结语
所以,大家懂了吗 ?
。
。
。
。
不懂的话,那就看我下一篇defer的解答
以上是关于go defer看到你头晕的操作的主要内容,如果未能解决你的问题,请参考以下文章
go语言笔记——调试还很弱,用gdb来做?可用panic和defer。格式化代码使用gofmt,貌似我的vim插件是自带