golang学习之路-21切片copy

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])
   }
}
发布了63 篇原创文章 · 获赞 0 · 访问量 1220

猜你喜欢

转载自blog.csdn.net/qq_37463791/article/details/103430041
今日推荐