在Go 中 copy 可以将第二个切片的值赋值给第一个。
copy(slice1,slice2)
copy 不会分配新的内存空间,赋值时以最短的切片为准。
func main() {
sl1 := make([]int, 3)
fmt.Println(sl1)
sl2 := []int{1,2,3,4,5}
copy(sl1, sl2)
fmt.Println(sl1)
fmt.Println(sl2)
}
输出:
[0 0 0]
[1 2 3]
[1 2 3 4 5]
可以看出,copy只会以最短的切片的长度来赋值,这时可能会造成一些数据的丢失,建议copy之前检测一下切片的长度。