deferingo安排在函数完成后运行的函数调用。所以1st打印功能fmt.Println("a ", Even())被推迟。但是当调用 defer 时执行参数,Even()立即调用函数。
package main
import "fmt"
func MakeEvenNumber() func() int {
num :=0
return func() (ret int) {
ret = num
num = num + 2
return ret
}
}
func main() {
Even := MakeEvenNumber()
defer fmt.Println("a ", Even())
fmt.Println("b ", Even())
fmt.Println("c ", Even())
fmt.Println("d ", Even())
}
输出:
b 2
c 4
d 6
a 0
这是延迟发生的。我只想知道有什么方法可以停止在 defer 函数中执行参数?
在这种情况下,输出将是:
b 0
c 2
d 4
a 6
defer fmt.Println("a ", **Even()**)此Even()函数将与 一起执行Println。
有没有办法做到这一点?
精慕HU
延迟函数作用是什么
延迟只是延迟第二个动画
延迟执行队列
关于网络延迟和数据库锁的问题
相关分类