Go语言切片复制

Go语言切片复制教程

Go 语言切片 的复制使用内置的 copy 函数。使用 copy 函数复制切片时,源切片的长度如果大于目的切片的长度,则会复制不完整。

copy函数

语法

func copy(dst, src []Type) int

参数

参数 描述
dst 目的切片。
src 源切片。

返回值

返回拷贝的元素的个数。

说明

将切片 src 拷贝到切片 dst,返回拷贝成功的元素的个数。如果切片 src 的长度大于 dst 切片的长度,那么只会复制 dst 切片长度个元素。

案例

切片复制

使用内置的 copy 函数,复制切片

package main import ( "fmt" ) func main() { fmt.Println("嗨客网(www.haicoder.net)") //使用内置的 copy 函数,复制切片 var sliceSrc = []string{"Hello", "HaiCoder"} var sliceDst = []string{"嗨客网", "Python", "Golang"} copy(sliceDst, sliceSrc) fmt.Println("sliceDst =", sliceDst) }

程序运行后,控制台输出如下:

49 golang切片复制.png

我们首先创建了一个有两个元素的切片 sliceSrc 和一个有三个元素的切片 sliceDst,接着,我们使用 copy 函数将切片 sliceDst 拷贝到切片 sliceSrc。

因为,切片 sliceDst 的长度大于切片 sliceSrc,所以切片 sliceSrc 的所有元素都被拷贝到了切片 sliceDst。使用 print 打印最后的结果,我们发现 sliceDst 的前两个元素已经被替换为 sliceSrc 的元素了。

切片复制

当源切片的长度大于目的切片长度时,复制不完整

package main import ( "fmt" ) func main() { fmt.Println("嗨客网(www.haicoder.net)") //当源切片的长度大于目的切片长度时,复制不完整 var sliceSrc = []string{"嗨客网", "Python", "Golang"} var sliceDst = []string{"Hello", "HaiCoder"} copy(sliceDst, sliceSrc) fmt.Println("sliceDst =", sliceDst) }

程序运行后,控制台输出如下:

50 golang切片复制.png

我们首先创建了一个有三个元素的切片 sliceSrc 和一个有两个元素的切片 sliceDst,接着,我们使用 copy 函数将切片 sliceDst 拷贝到切片 sliceSrc。

因为,切片 sliceDst 的长度小于切片 sliceSrc,所以切片 sliceSrc 的所有元素未能都被拷贝到了切片 sliceDst。使用 print 打印最后的结果,我们发现 sliceSrc 的前两个元素被拷贝到了 sliceDst。

Go语言切片复制总结

Go 语言的切片的复制使用内置的 copy 函数。Go 语言 copy 函数语法:

func copy(dst, src []Type) int

将切片 src 拷贝到切片 dst,返回拷贝成功的元素的个数。如果切片 src 的长度大于 dst 切片的长度,那么只会复制 dst 切片长度个元素。