一种片是一个可变长度序列, 用于存储相似类型的元素, 不允许在同一切片中存储不同类型的元素。在”
切片”
中, 你可以使用copy()函数由Go语言提供。换句话说, 通过copy()函数可以将一个切片的元素复制到另一切片中。
语法如下:
func copy(dst, src []Type) int
这里, dst代表目标切片, 并且src表示源切片。它将返回复制的元素数量, 即最少len(dst)orlen(src)。让我们借助给定的示例进行讨论:
【如何在Golang中将一个切片复制到另一个切片中()】范例1:
// Go program to illustrate how to copy
// a slice into another slice using the
// copy function
package mainimport "fmt"// Main Method
func main() {// Creating slices
slc1 := [] int {58, 69, 40, 45, 11, 56, 67, 21, 65}
var slc2 [] int
slc3 := make([] int , 5)
slc4 := [] int {78, 50, 67, 77}// Before copying
fmt.Println( "Slice_1:" , slc1)
fmt.Println( "Slice_2:" , slc2)
fmt.Println( "Slice_3:" , slc3)
fmt.Println( "Slice_4:" , slc4)// Copying the slices
copy_1 := copy(slc2, slc1)
fmt.Println( "\nSlice:" , slc2)
fmt.Println( "Total number of elements copied:" , copy_1)copy_2 := copy(slc3, slc1)
fmt.Println( "\nSlice:" , slc3)
fmt.Println( "Total number of elements copied:" , copy_2)copy_3 := copy(slc4, slc1)
fmt.Println( "\nSlice:" , slc4)
fmt.Println( "Total number of elements copied:" , copy_3)// Don't confuse here, because in above
// line of code the slc4 has been copied
// and hence modified permanently i.e.
// slc 4 contains [58 69 40 45]
copy_4:= copy(slc1, slc4)
fmt.Println( "\nSlice:" , slc1)
fmt.Println( "Total number of elements copied:" , copy_4)}
输出如下:
Slice_1: [58 69 40 45 11 56 67 21 65]
Slice_2: []
Slice_3: [0 0 0 0 0]
Slice_4: [78 50 67 77]Slice: []
Total number of elements copied: 0Slice: [58 69 40 45 11]
Total number of elements copied: 5Slice: [58 69 40 45]
Total number of elements copied: 4Slice: [58 69 40 45 11 56 67 21 65]
Total number of elements copied: 4
说明:在上面的示例中, 我们有四个整数类型切片, 并对它们执行复制操作:
- copy_1:=copy(slc2, slc1):这里, slc2是目标切片, 并且slc1是源切片。这里, slc2是我们尝试复制时的零切片slc1切入slc2切片, 然后复制方法将返回源切片和目标切片的最小长度, 对于空切片slc2, 该长度为零。
- copy_2:=copy(slc3, slc1):这里, slc3是目标切片, 并且slc1是源切片。在这里slc3slice是空切片, 因此当我们尝试复制时slc1切成slc3使用copy()函数, 它仅从中复制5个元素slc1从索引0开始的切片, 因为此切片的长度为5, 所以它不能存储大于5的元素。
- copy_3:=copy(slc4, slc1):这里, slc4是目标切片, 并且slc1是源切片。当我们尝试复制slc1切成slc4slice使用copy()函数从索引0开始仅复制4个元素。因为slc4slice是4, 因此不能存储超过4个元素。
- copy_4:=copy(slc1, slc4):在这里, 你可能会对它的输出感到困惑。看到, slc4上面的代码行已更新。所以现在考虑更新的值slc4。所以现在slc4有4个元素和slc1有9个元素。因此, 将要复制的元素总数为4。
// Go program to illustrate how to copy
// a slice into another slice using the
// copy function
package mainimport "fmt"func main() {// source slice
slice_1 := []string{ "Geeks" , "for" , "Geeks" , "GFG" }// creating destination slice
// using make function
slice_2 := make([]string, 3)// Before Copying
fmt.Println( "Slice_1: " , slice_1)
fmt.Println( "Slice_2: " , slice_2)// Copying slice_1 into slice_2
// using copy function
Copy_1 := copy(slice_2, slice_1)
fmt.Println( "\nSlice_1: " , slice_1)
fmt.Println( "Slice_2: " , slice_2)
fmt.Println( "Number of elements copied: " , Copy_1)// Copying the slice
// using copy function
// see the code clearly
Copy_2 := copy(slice_1, []string{ "123geeks" , "gfg" })
fmt.Println( "\nSlice_1 : " , slice_1)
fmt.Println( "Number of elements copied:" , Copy_2)}
输出如下:
Slice_1:[Geeks for Geeks GFG]
Slice_2:[]Slice_1:[Geeks for Geeks GFG]
Slice_2:[Geeks for Geeks]
Number of elements copied:3Slice_1:[123geeks gfg Geeks GFG]
Number of elements copied: 2
推荐阅读
- 如何计算Golang字符串中重复字符的数量()
- 如何在Golang中将数组复制到另一个数组()
- JS-异步请求
- 事件驱动架构在 vivo 内容平台的实践
- AH00052: child pid 25043 exit signal Segmentation fault (11)
- 微服务架构 | 4. 服务调用
- 赫夫曼树图解
- springboot整合shiro实现登录验证授权
- Centos8下几个高级存储