\n\n数组类型是值类型,不是引用类型,故函数传递数组参数的时候是值拷贝,函数内部使用的是数组的备份,不会影响初始的数组。\n\n数据声明时未显式初始化的元素会隐式初始化为类型对应的0(如数字0、空字符串、false等)。\n\n切片(Slice)\n[]T,T表示切片中的元素类型\n\n切片的结构:\n\ntype slice struct{\n \n Data unsafe.Pointer\n \n Len int\n \n Cap int\n \n}\n切片包含了对一段底层数组的动态引用,以及长度和容量\n\n长度表示已经有几个元素,容量表示一共能放多少元素\n\n定义的一般方法\n\na := make([]int,4,6)\n\n第一个是切片类型,第二个数是len,第三个数是capacity,再append 只能在len之后append。\n\n定义的其他方法\n\nvar num = [10]int{0,1,2,3,4,5,6,7,8,9}\n\nb := num[2:5:8]\n\n第一个是start,第二个数是end,第三个数是capacity\n\n越容量访问会报panic\n\n注意slice赋值时底层数组是否相同,若直接将sliceA的一部分赋给sliceB,则修改一方时另一方会跟着改动。\n\n为避免这种浅拷贝,可以使用Go的内置函数copy,可以做到深拷贝。