gpt4 book ai didi

go - 如何在延迟函数中延迟执行参数

转载 作者:IT王子 更新时间:2023-10-29 01:59:19 25 4
gpt4 key购买 nike

<分区>

go 中的

defer 安排函数调用在函数完成后运行。所以 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 .

有什么办法吗?

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com