美文网首页
day02-10slice_copy

day02-10slice_copy

作者: 李超_2292 | 来源:发表于2020-03-15 22:01 被阅读0次

    copy复制了一个副本出来,改了原数组的值不会影响拷贝后的数组

    a1 := []int{1,3,5}
    a2 := a1
    var a3 = make([]int,3,3)
    copy(a3,a1)
    fmt.Println(a1,a2,a3)
    //[1 3 5] [1 3 5] [1 3 5]
    a1[0] = 100
    fmt.Println(a1,a2,a3)
    //[100 3 5] [100 3 5] [1 3 5]
    

    删除元素,将a1里面的3删掉

    a1 = append(a1[:1],a1[2:]...)
    fmt.Printf("a1=%v len(a1)=%d  cap(a1)=%d\n",a1,len(a1),cap(a1))
    //a1=[100 5]  len(a1)=2  cap(a1)=3
    
    x1 := [...]int{1,3,5}
    s1 := x1[:]
    fmt.Printf("s1=%v  len(s1)=%d  cap(s1)=%d\n",s1,len(s1),cap(s1))
    //s1=[1 3 5]  len(s1)=3  cap(s1)=3
    

    切片不保存具体的值,修改切片就是修改底层数组

    切片对应一个底层数组

    底层数组都是占用一块连续的内存

    s1 = append(s1[:1],s1[2:]...)
    fmt.Printf("s1=%v  len(s1)=%d  cap(s1)=%d\n",s1,len(s1),cap(s1))
    //s1=[1 5]  len(s1)=2  cap(s1)=3
    fmt.Printf("x1=%v  len(x1)=%d  cap(x1)=%d\n",x1,len(x1),cap(x1))
    //x1=[1 5 5]  len(x1)=3  cap(x1)=3
    fmt.Printf("%p\n",s1) //打印s1的内存地址
    //0xc000010480

    相关文章

      网友评论

          本文标题:day02-10slice_copy

          本文链接:https://www.haomeiwen.com/subject/kxzfjhtx.html