1
learningman 2022 年 7 月 23 日
前面两个在 defer 注册的时候,err 的值已经固定了,第一个不用说了,第二个也捕获了当时为 nil 的 err ,只有最后一个能拿到 return 时的外层的 err 。
闭包那块的东西。 |
2
Asakijz OP @learningman 那是不是可以这么理解,就是在使用 defer 的时候,里面就已经确定了对应类型的零值了。而因为第三条语句是闭包所以能逐层向外寻找 err 值
|
3
learningman 2022 年 7 月 23 日 @Asakijz #2 不是存了 0 值,是存了注册时变量对应的值
|
4
Asakijz OP @learningman 感谢,现在理解了
|
5
keepeye 2022 年 7 月 23 日 前两句,值已经确定了
|
6
wd 2022 年 7 月 23 日 via iPhone 学习下闭包吧 这概念各种语言里面都有。以前我记得面试 js 的时候必问闭包..
|
9
lasfresas 2022 年 7 月 23 日 感谢,我也顺便巩固了一下
|
10
raynor2011 2022 年 7 月 23 日 前面两个 err 是传进去的,最后一个是现取的
|
11
tianyou666shen 2022 年 7 月 25 日 defer 把一个调用函数压入栈,随后在函数 return 执行时先进后出地执行.
如果函数的参数存在未确定的值,就会先确定函数参数值,再将整个语句存入 defer 的调用栈. 在这个题目: 最后一个使用函数没有参数,所以没用确定一个固定的参数传入.前两行的函数需要函数参数,所以会去寻找一个固定值. |