package main
import "fmt"
func main() {
//copy(destSlice,srcSlice[]T)int
//特点: 1、2->1
//2.必须承载复制元素到个数,来源和目标类型一致
//copy的返回值表示实际发生复制的元素个数
slice1 :=[]int{1,2,3,4,5}
slice2 :=[]int{5,4,3}
copy(slice2,slice1)//
fmt.Println(slice1,slice2)
copy(slice1,slice2)//只会复制slice2的元素到slice1中,并且从第一位开始插入
fmt.Println(slice1,slice2)
//设置元素的数量为1000
const elementConut = 1000
//预分配足够多的元素切片
srcData :=make([]int,elementConut)
//将切片赋值
for i:=0;i<elementConut ;i++ {
srcData[i] = i
}
//引用切片数据
reData := srcData//此处为引用,只是指针指向了src的地址
//预分配足够多的元素切片
copyData :=make([]int,elementConut)
//将数据复制到新的切片空间中
copy(copyData,srcData)
//修改原始数据到第一个元素
println(srcData[0],reData[0])
srcData[0] = 999
//打印引用切片到第一个元素
println(reData[0],srcData[0])
//打印复制切片到第一个和最后一个元素
println(copyData[0],copyData[elementConut-1])
//copy原始数据从4到6(顾头不顾尾)
copy(copyData,srcData[4:6])
for i:=0;i<5;i++ {
fmt.Printf("%d",copyData[i])
}
}
golang学习之路-21切片copy
最新推荐文章于 2025-06-02 10:24:22 发布
本文详细探讨了Go语言中slice拷贝的机制,包括如何使用copy函数进行元素复制,以及拷贝操作对源切片和目标切片的影响。通过实例演示了不同情况下slice的复制过程,揭示了拷贝数量、切片引用与实际复制的区别。
2234

被折叠的 条评论
为什么被折叠?



