我有以下初始代碼: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 關注
- 106 瀏覽
添加回答
舉報
0/150
提交
取消