golang的返回值问题

func f3() (r int) {
    defer func(r int) {
        r = r + 5
    }(r)
    return 1
}

为什么结果是1,能详细解释一下吗

阅读 1.9k
3 个回答

因为你返回的1。

这样才会返回5:

func f3() (r int) {
    defer func(t int) {
        r = t + 5
    }(r)
    return
}

作用域问题,你把参数r换一个

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题