背景:这个地方的 test-1 题 https://golang.dbwu.tech/traps/defer_exam/
如下 test-1 题,使用具名返回值,defer 就能修改 t 的值
package main
func foo(n int) (t int) {
t = n
defer func() {
t += 3
}()
return t
}
func main() {
println(foo(1))
}
但是我不使用具名,就算我把 t 移到最外层的作用域,defer 也改变不了 t 的值,我试着不在 defer 作用域内,就可以修改
package main
var t int
func foo(n int) int {
t = n
defer func() {
t += 3
}()
return t
}
func main() {
println(foo(1))
}
感觉被绕晕了
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.