English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
切片是相似类型的存储元素,则不允许不同类型的元素的存储在同一条带的可变长度序列。在切片中,您可以使用Go语言提供的copy()函数将一个切片复制到另一个切片中。换句话说,通过copy()函数可以将一个切片的元素复制到另一切片中。
语法:
func copy(dst, src []Type) int
此处,dst表示目标切片,而src表示源切片。它将返回要复制的元素数量,该数量应为len(dst)或len(src)的最小值。让我们借助给定的示例演示如何使用:
package main import "fmt" func main() { //创建切片 slc1 := []int{58, 69, 40, 45, 11, 56, 67, 21, 65} var slc2 []int slc3 := make([]int, 5) slc4 := []int{78, 50, 67, 77} //复制之前 fmt.Println("Slice_1:", slc1) fmt.Println("Slice_2:", slc2) fmt.Println("Slice_3:", slc3) fmt.Println("Slice_4:", slc4) //슬라이스를 복사합니다 copy_1 := copy(slc2, slc1) fmt.Println("\nSlice:", slc2) fmt.Println("复制的元素总数:", copy_1) copy_2 := copy(slc3, slc1) fmt.Println("\nSlice:", slc3) fmt.Println("复制的元素总数:", copy_2) copy_3 := copy(slc4, slc1) fmt.Println("\nSlice:", slc4) fmt.Println("复制的元素总数:", copy_3) //这里不要混淆,因为在上面 //复制了slc4的代码行 //并因此进行永久修改,即 // slc 4包含[58 69 40 45] copy_4 := copy(slc1, slc4) fmt.Println("\nSlice:", slc1) fmt.Println("复制的元素总数:", 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: [] 复制的元素总数: 0 Slice: [58 69 40 45 11] 复制的元素总数: 5 Slice: [58 69 40 45] 复制的元素总数: 4 Slice: [58 69 40 45 11 56 67 21 65] 复制的元素总数: 4
用法说明:在上面的示例中,我们有四个整数类型切片,并对它们执行复制操作:
copy 1:= copy(slc2, slc1):여기서,2이 대상 슬라이스입니다.1이 원 슬라이스입니다. 여기서,2스ライ스에1에서,2이 nil 슬라이스이므로, copy 메서드는 원 슬라이스와 대상 슬라이스의 최소 길이를 반환합니다. 비어 있는 슬라이스2의 최소 길이는 0입니다.
copy_2:= copy(slc3,slc1):여기서,3이 대상 슬라이스입니다. 그리고1이 원 슬라이스입니다. 여기서,3을 시도할 때,1스ライ스는 비어 있으므로, copy() 함수를 사용하여3스lice를 복사합니다5에서,1스lice를 복사했습니다5개의 요소를 복사할 수 있습니다5,따라서 를 저장할 수 없습니다5의 요소.
copy_3:= copy(slc4,slc1):여기서,slc4이 대상 슬라이스입니다. 그리고slc1이 원 슬라이스입니다. copy() 함수를 사용하여slc1 슬라이스를 복사합니다slc4 슬라이스를 복사할 때, 그것은 인덱스 0에서 시작하여4개의 요소입니다.slc4 슬라이스의 길이는4이므로, 그 크기를 초과할 수 없습니다4의 요소.
copy_4:= copy(slc1,slc4):여기서, 출력 후 혼란스러울 수 있습니다. 참고로, 위의 코드 줄에서 slc4을 고려해야 합니다4이 업데이트되었습니다. 따라서, 현재 slc4개의 요소가 있습니다. 그리고 slc4의 업데이트된 값입니다. 따라서, 현재 slc1개의 요소가 있습니다. 그리고 slc9개의 요소가 있습니다. 따라서, 복사할 요소의 총 수는4。
예시2:
package main import "fmt" func main() { //원 슬라이스 slice_1 := []string{"w3codeboxs", "for", "w3codeboxs", "GFG"} //대상 슬라이스를 생성합니다, make 함수를 사용합니다 slice_2 := make([]string, 3) //복사 전 fmt.Println("Slice_1: ", slice_1) fmt.Println("Slice_2: ", slice_2) //를 복사합니다1를 slice_2 Copy_1 := copy(slice_2, slice_1) fmt.Println("\nSlice_1: ", slice_1) fmt.Println("Slice_2: ", slice_2) fmt.Println("복制的 요소 수: ", Copy_1) //슬라이스를 복사합니다 //복사 기능을 사용합니다 //코드를 명확하게 볼 수 있습니다 Copy_2 := copy(slice_1, []string{"123w3codeboxs", "gfg"}) fmt.Println("\nSlice_1 : ", slice_1) fmt.Println("복制的 요소 수:", Copy_2) }
출력:
Slice_1: [w3codeboxs for w3codeboxs GFG] Slice_2: [ ] Slice_1: [w3codeboxs for w3codeboxs GFG] Slice_2: [w3codeboxs for w3codeboxs] 복사된 요소 수: 3 Slice_1: [123w3codeboxs gfg w3codeboxs GFG] 복사된 요소 수: 2