上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]。