1、基础内置类型

        包括数值类型、字符串类型、布尔类型、数组等除5种引用类型和复合类型外都是基础内置类型。当对这些类型的值进行增加或者删除的时候会创建一个新值,因此当把这些类型的值传递给方法或者函数时,传递的也是一个对应值的副本。

        对数值类型来说,零值是0;对字符串来说,零值是空字符串;对布尔类型,零值是 false。习惯是使用关键字 var创建变量并初始化零值,如果被初始化为非零值通常是用简短模式。

2、引用类型:

        五种引用类型变量:切片slice、映射map、通道channel、接口interface和函数类型func()
。引用类型其实是一个标头( header)值,里面包含一个指向底层数据结构的指针,因此通过复制传递一个引用类型的值的副本时,本质上是传递指针,还是共享底层的数据结构。

        引用类型作为参数时,称为浅拷贝,形参改变,实参数跟随变化.因为传递的是地址,形参和实参都指向同一块地址

        值类型作为参数时,称为深拷贝,形参改变,实参不变,因为传递的是值的副本,形参会新开辟一块空间,与实参指向不同

3、复合类型

        结构体和数组