Go微服务实战
上QQ阅读APP看书,第一时间看更新

3.2.4 copy

切片之间的元素赋值可以利用copy函数来实现,下面来看一下代码示例:


book/ch03/3.2/copy/main.go
1. package main
2.
3. import "fmt"
4.
5. func main() {
6.      a1 := []int{1,1,1,1,1}
7.      b1 := []int{-1,-1,-1}
8.      copy(a1,b1)//将b1复制到a1
9.      fmt.Println("a1:",a1)
10.     fmt.Println("b1:",b1)
11.
12.     a2 := []int{2,2,2,2,2}
13.     b2 := []int{-2,-2,-2}
14.     copy(b2,a2)//将a2复制到b2
15.     fmt.Println("a2:",a2)
16.     fmt.Println("b2",b2)
17. }
18. //以下是程序打印结果
19. a1: [-1 -1 -1 1 1]
20. b1: [-1 -1 -1]
21. a2: [2 2 2 2 2]
22. b2 [2 2 2]

第6行至第10行,先定义了两个切片a1和b1,长度分别为5和3。然后使用copy将b1复制到a1,因为a1比b1长,所以前三个元素变为-1,后两个元素保持不变,可参考第19行和第20行的结果。

第12行至第16行,a2长度为5,而b2长度为3,将a2复制到b2,因为a2比b2长,所以b2的三个元素都变为2,参考第21行和第22行的打印结果。

注意

copy的参数必须是slice,不能是数组。所以如果数组a要使用copy,则需要传递a[:],或者其他切片形式如a[i:j]。