值类型
- 值类型只分配一个内存,并把这个内存和值类型的变量关联起来
引用类型
- 引用类型要分配两个内存,我称之为一块管理内存和一块数据内存,数据内存存放实际的数据,管理内存里面有个指针指向这个数据内存,通过这个指针来操纵实际的数据,另外管理内存和这个引用类型的变量关联起来。
所以,当两个值类型的变量赋值操作时,是把值类型的那块内存赋值过去;当引用类型变量赋值给另一个引用类型时,是把复制源变量的管理内存复制到目的变量的管理内存,这样,这两个引用变量最终都是指向同一个数据内存,任一个变量修改了数据,另一个变量都会受到影响。函数传参时也是这样的,因为golang的函数传参都是按值传递,所以就算是参数是引用类型,传参的时候也是把这个引用类型的管理内存传进去,然后通过这个管理内存操作实际的数据。
没有评论:
发表评论