• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

54_Go基础_1_21切片的拷贝

原作者: [db:作者] 来自: [db:来源] 收藏 邀请
 1 package main
 2 
 3 import "fmt"
 4 
 5 func main() {
 6     /*
 7         深拷贝:拷贝的是数据本身。
 8             值类型的数据,默认都是深拷贝:array,int,float,string,bool,struct
 9 
10 
11         浅拷贝:拷贝的是数据 地址。
12             导致多个变量指向同一块内存
13             引用类型的数据,默认都是浅拷贝:slice,map,
14 
15             因为切片是引用类型的数据,直接拷贝的是地址。
16 
17         func copy(dst, src []Type) int
18             可以实现切片的拷贝
19 
20     */
21 
22     s1 := []int{1, 2, 3, 4}
23     s2 := make([]int, 0) //len:0,cap:0
24     for i := 0; i < len(s1); i++ {
25         s2 = append(s2, s1[i])
26     }
27     fmt.Println(s1) // [1 2 3 4]
28     fmt.Println(s2) // [1 2 3 4]
29 
30     s1[0] = 100
31     fmt.Println(s1) // [100 2 3 4]
32     fmt.Println(s2) // [1 2 3 4]
33 
34     //copy()
35     s3 := []int{7, 8, 9}
36     fmt.Println(s2) // [1 2 3 4]
37     fmt.Println(s3) // [7 8 9]
38 
39     // copy(s2, s3)    // 将s3中的元素,拷贝到s2中
40     // fmt.Println(s2) // [7 8 9 4]
41 
42     // copy(s3, s2)    // 将s2中的元素,拷贝到s3中
43     // fmt.Println(s3) // [1 2 3]
44 
45     copy(s3[1:], s2[2:])
46     fmt.Println(s3) // [7 3 4]
47 
48 }

 


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
Go经验总结----2017.07发布时间:2022-07-10
下一篇:
Go语言数组的使用发布时间:2022-07-10
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap