背景:这个地方的 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))
}
感觉被绕晕了
|