2 回答
TA贡献1848条经验 获得超6个赞
问题是您在调用时首先将 i 分配给 15closure1()然后关闭两个您打印它..您closure1() 在将 i 分配给 20后所做的.. 这就是问题所在,这应该可以解决您的问题:
package main
import "fmt"
func main() {
i := 10
closure1 := func() {
fmt.Printf("closure, i: %d\n", i)
i = 15
}
closure1()
fmt.Printf("in main, i: %d\n", i)
closure2 := func(x int) {
fmt.Printf("function call, pass parameter, i: %d\n", x)
}
closure1()
i = 20 // Now it assigns it back to 20.. So the result below will become 20...
closure2(i)
}
你看到你的问题了吗?
TA贡献1795条经验 获得超7个赞
closure1 的最后一行将 i 设置为 15。这个 i 属于 main() 上下文。
main 的最后一行再次调用closure1()。所以 main 中的 i 再次设置为 15。
- 2 回答
- 0 关注
- 175 浏览
添加回答
举报
