为了账号安全,请及时绑定邮箱和手机立即绑定

我不明白返回函数的结果

我不明白返回函数的结果

Go
LEATH 2022-06-13 10:57:33
我有以下初始代码:package mainfunc test(x int) (func(), func()) {    return func() {            println(x)            x += 10        }, func() {            println(x)        }}func main() {    a, b := test(100)    a()    b()}输出是100110如果我按如下方式编辑代码package mainfunc test(x int) (func(), func()) {    return func() {            println(x)        }, func() {            println(x)            x += 10        }}func main() {    a, b := test(100)    a()    b()}结果是100100我希望最后一个结果如下,但事实并非如此,为什么?110100
查看完整描述

1 回答

?
www说

TA贡献1775条经验 获得超8个赞

因为a是一个打印 的函数x,并且b是一个打印x并添加 10 的函数。如果您a先调用然后再调用b,它将打印 100 两次,然后向其添加 10,但永远不会打印。先调用b然后再调用a,它会打印你想要的。



查看完整回答
反对 回复 2022-06-13
  • 1 回答
  • 0 关注
  • 93 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信