Go 语言 的 切片 的复制使用内置的 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)
}
程序运行后,控制台输出如下:
我们首先创建了一个有两个元素的切片 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)
}
程序运行后,控制台输出如下:
我们首先创建了一个有三个元素的切片 sliceSrc 和一个有两个元素的切片 sliceDst,接着,我们使用 copy 函数将切片 sliceDst 拷贝到切片 sliceSrc。
因为,切片 sliceDst 的长度小于切片 sliceSrc,所以切片 sliceSrc 的所有元素未能都被拷贝到了切片 sliceDst。使用 print 打印最后的结果,我们发现 sliceSrc 的前两个元素被拷贝到了 sliceDst。
Go 语言的切片的复制使用内置的 copy 函数。Go 语言 copy 函数语法:
func copy(dst, src []Type) int
将切片 src 拷贝到切片 dst,返回拷贝成功的元素的个数。如果切片 src 的长度大于 dst 切片的长度,那么只会复制 dst 切片长度个元素。