golang copy 函数的使用

Python029

golang copy 函数的使用,第1张

之前用 copy 不多,本以为它是个很方便的函数,没想到在做练习题时竟还是被它坑了。是我对他期望太多了。

基本认识:

不是你定义好类型,就能将 src 完全 copy 到 dst 的,你需要初始化长度。

由于只 copy 切片中的元素,所以如果切片元素的类型是引用类型,那么 copy 的也将是个引用。

如下面例子,matA 和 matB 地址不一样,但 matA[0] 和 matB[0] 的地址是一样的。

如果想 copy 多维切片中的每一个切片类型的元素,那么你需要将每个切片元素进行 初始化 拷贝 。注意是两步:先 初始化 ,再 拷贝

正确的拷贝一个多维数组

2021-10-29

内置函数copu()

作用:可以将一个数组切片复制到另一个数组切片中,如果加入的两个数组切片不一样大,就会按照其中较小的那个数组切片的元素个数进行复制。

用法:

情况一:将slice1中的前三个元素,复制给slice2

情况二:将slice2中的元素,复制给slice1的前三个

go语言我不懂,但是看似乎懂了,仅供参考

意思是源和目标可以为同一目标,复制的数量是源或者目标的元素最小数量

比如例子中的copy(s,a[0]:)

a虽然一共有8个元素,但是s只有6<len(det)>个元素 ,看上面的makeint是6

所以这里只复制了最小数量6个元素,因此a的012345被复制进了s

第二个

copy(s,s[2]:)

这里是从s[2]开始,所以len是6-2=4,而且因为4<6,只复制4个元素

因此

0 1 2 3 4 5 复制后4个元素到前面结果就是:

2 3 4 5 4 5 //这个就是可以源和目标可重叠,

上面的也说明了按照len(str)和len(det)中最少值