观察如下代码
1 | package main |
1
2
3
4
5 > Hello, playground
>
> 5 5 5 5 5 4 3 2 1 0
> Program exited.
>
知识点
- defer后续的语句是放入堆栈中在函数return之前会进行执行,并且是先入后出
- golang中闭包中对于变量的访问相当于是引用
golang中函数传递都是使用的传值方式进行的,之所以会有函数可以修改map、slice内部值的原因是由于数据结构在内存中的使用包含了指针,每一个slice的元素会包含一个value、count、capacity,value类似于指针,所以使用slice[0]=1是会修改他的第一个元素,从这一方面来说golang还是类C的:)
转载请注明来源链接 http://just4fun.im/2017/08/21/golang-defer和引用/ 尊重知识,谢谢:)