值类型和引用类型的说明

1.值类型:基本数据类型int系列,float系列,bool,string,数组和结构体struct

2.引用类型:指针,slice切片、map、管道chan、interface等都是引用类型

 

值类型和引用类型的特点

1.值类型:变量直接存储值,内存通常在栈中分配

2.引用类型:变量存储的值是一个内存地址,这个内存地址对应的空间才是真正存储数据(值),内存通常在堆上分配(也有可能会被分配在栈上),当没有任何变量引用这个地址时,改地址对应的数据空间就成为一个垃圾,由GC来回收。

 

简单来理解

  假设在厨房中有大大小小的各种罐子

  值类型是把东西放在一个罐子里,通过变量可以知道这个罐子的摆放位置,罐子里面的东西就是值,

  引用类型也是把东西放在一个罐子里,变量名也同样代表的是这个罐子摆放的位置,罐子里面的东西(值)是另外一个罐子的摆放位置。

  这里面说的值就是我们在开发当中实际使用到的内容,比如说var a = 100,var b = "张三",这里的100和张三就是罐子的值。不同的是引用类型有两个罐子,前面那个管子里面存的值是后面那个罐子的摆放位置,后面那个罐子里的值才是100或者张三

七、GO语言值类型和引用类型_内存地址