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
网友评论