一、值类型和引用类型示例:
值类型:基本数据类型系列,如:int,float,bool,string,数组和结构体等。
引用类型:如:指针,slice切片,map,管道chan,interface等。
二、一般程序的内存分布情况:
三、值类型和引用类型的使用:
1、值类型:变量直接存储值,内存通常在栈中分配。
2、引用类型:变量存储的是一个地址,这个地址对应的空间才是真正的存储数据,内存通常在堆上分配,当没有任何变量引用这个地址时,该地址对应的数据空间就成了一个垃圾,由GC来回收。
3、内存的栈区和堆区:
golang默认都是采用值传递,即拷贝传递,也就是深拷贝;而引用传递则是浅拷贝。只有一些特定的类型,如:slice,map,channel,function,pointer这些天生就是引用类型,是通过引用传递的。
四、值传递和引用传递:
1、值传递:值传递是指在调用函数时将实际参数复制一份传递到函数中,这样在函数中如果对参数进行修改,将不会影响到实际参数。
2、引用传递:引用传递是指在调用函数时将实际参数的地址传递到函数中,这样在函数中如果对参数进行修改,将会影响到实际参数。