在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
Go函数是可以闭包的。闭包是一个函数值,他来自函数体外部的变量引用
小demo: 上边小demo是Go文档中的闭包写法 pos,neg两个变量分别调用了adder()函数 并将0-10的数作为参数传递 按照平常的思维的结果为: adder()函数中的sum的值为0+i 可是打印出的结果为
结果跟想象中的不同 sum+i的值 i没有变 sum的值一定是改变的了 实际上,在pos, neg := adder(), adder()的时候,pos和neg引用不仅得到了上面的那个闭包,也得到了sum这个在引用中的”闭包变量”,所以实际上每次调用pos(i)和neg(-2 * i),都是改变了sum的值并存在pos引用对应的函数中了,sum的值为上次调用函数的最终结果 总结: 闭包函数时定义的局部变量是无关操作的
:::仅做自我理解 |
请发表评论