执行defer会保存一份副本

题目

下面这段代码输出什么?

1
2
3
4
5
6
7
8
func hello(i int) {  
fmt.Println(i)
}
func main() {
i := 5
defer hello(i)
i = i + 10
}

答案解析:

1
5。

这个例子中,hello() 函数的参数在执行 defer 语句的时候会保存一份副本,在实际调用 hello() 函数时用,所以是 5.


执行defer会保存一份副本
http://example.com/2023/06/23/Go每日一题/执行defer会保存一份副本/
作者
Feng Tao
发布于
2023年6月23日
更新于
2023年6月23日
许可协议