我有以下初始代码: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
,它会打印你想要的。
- 1 回答
- 0 关注
- 93 浏览
添加回答
举报
0/150
提交
取消