golang之copy

TTWP_8 · · 534 次点击 · · 开始浏览    
这是一个创建于 的文章,其中的信息可能已经有所发展或是发生改变。

将两个slice合并到一个总的slice过程中使用copy

    v1Slice := []int{1, 2}
    totalSlice := []int{}
    c := copy(totalSlice, v1Slice)
    fmt.Printf("c:%v\ntotalSlice:%+v\n", c, totalSlice)
    v2Slice := []int{3, 4}
    totalSlice = append(totalSlice, v2Slice...)
    fmt.Printf("\nv1Slice:%+v\n", v1Slice)
    fmt.Printf("\nv2Slice:%+v\n", v2Slice)
    fmt.Printf("\ntotalSlice:%+v\n", totalSlice)

输出:

c:0
totalSlice:[]

v1Slice:[1 2]

v2Slice:[3 4]

totalSlice:[3 4]

发现这个有问题,不是自己想要的:
代码修改为:

    v1Slice := []int{1, 2}
    totalSlice := make([]int, len(v1Slice))
    c := copy(totalSlice, v1Slice)
    fmt.Printf("c:%v\ntotalSlice:%+v\n", c, totalSlice)
    v2Slice := []int{3, 4}
    totalSlice = append(totalSlice, v2Slice...)
    fmt.Printf("\nv1Slice:%+v\n", v1Slice)
    fmt.Printf("\nv2Slice:%+v\n", v2Slice)
    fmt.Printf("\ntotalSlice:%+v\n", totalSlice)

输出:

c:2
totalSlice:[1 2]

v1Slice:[1 2]

v2Slice:[3 4]

totalSlice:[1 2 3 4]


发现copy会copy目标slice元素的个数。所以 totalSlice := make([]int, len(v1Slice)),totalSlice 用make指定slice的长度。


有疑问加站长微信联系(非本文作者)

本文来自:简书

感谢作者:TTWP_8

查看原文:golang之copy

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

534 次点击  ∙  1 赞  
加入收藏 微博
暂无回复
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传