我们知道,go语言中切片类型是从数组类型基础上发展出来的新类型,当声明一个数组时,不指定该数组长度,则该类型为切片(“动态数组”),切片有自己独立的内部结构字段(len, cap, array pointer),并共用底层数组空间。
例如:
1 | var s1 [10]int //数组 |
切片属于引用类型,使用make分配内存空间和初始化成员结构。
1 | a := make([]int, 3) //长度为3 |
切片字面量初始化:
数组到切片的拷贝(共享底层数组空间)
切片之间的拷贝分为2种:浅拷贝和深拷贝
浅拷贝:
源切片和目的切片共享同一底层数组空间,源切片修改,目的切片同样被修改。
1 | package main |
深拷贝:
源切片和目的切片各自都有彼此独立的底层数组空间,各自的修改,彼此不受影响
1 | package main |