English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Slicesist für speicherähnliche Elemente der gleichen Typen und erlaubt keine Speicherung verschiedener Typen in einer variablen Länge der gleichen Reihe. In Slices kann man in Go-Sprache diecopy() -FunktionKopiert einen Slice in einen anderen Slice. Mit anderen Worten, indem man die copy() -Funktion verwendet, können die Elemente eines Slices in einen anderen Slice kopiert werden.
Syntax:
func copy(dst, src []Type) int
hierdststellt den Zieldatenbereich dar, währendsrcstellt den Quelldatenbereich dar. Es gibt die Anzahl der zu kopierenden Elemente zurück, diefürlen(dst)oderlen(src)vonMinimum。Lassen Sie uns mit einem gegebenen Beispiel zeigen, wie man dies verwenden kann:
package main import "fmt" func main() { //Erstelle Schneide slc1 := []int{58, 69, 40, 45, 11, 56, 67, 21, 65} var slc2 []int slc3 := make([]int, 5) slc4 := []int{78, 50, 67, 77} //vor dem Kopieren fmt.Println("Slice_1:", slc1) fmt.Println("Slice_2:", slc2) fmt.Println("Slice_3:", slc3) fmt.Println("Slice_4:", slc4) //Kopieren des Slice Elemente.1 := copy(slc2, slc1) fmt.Println("\nSchneide:", slc2) fmt.Println("Anzahl der kopierten Elemente:", copy_1) Elemente.2 := copy(slc3, slc1) fmt.Println("\nSchneide:", slc3) fmt.Println("Anzahl der kopierten Elemente:", copy_2) Elemente.3 := copy(slc4, slc1) fmt.Println("\nSchneide:", slc4) fmt.Println("Anzahl der kopierten Elemente:", copy_3) //Verwechsle dies nicht, denn in dem obigen //kopierte slc4Zeilen des Codes //und führt daher eine dauerhafte Änderung durch, d.h. // slc 4enthält[58 69 40 45] Elemente.4 := copy(slc1, slc4) fmt.Println("\nSchneide:", slc1) fmt.Println("Anzahl der kopierten Elemente:", copy_4) }
Ausgabe:
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] Schneide: [] Anzahl der kopierten Elemente: 0 Schneide: [58 69 40 45 11] Anzahl der kopierten Elemente: 5 Schneide: [58 69 40 45] Anzahl der kopierten Elemente: 4 Schneide: [58 69 40 45 11 56 67 21 65] Anzahl der kopierten Elemente: 4
Verwendungshinweis:In dem obigen Beispiel haben wir vier Integer-Schneiden und führen eine Kopieroperation durch:
copy 1:= copy(slc2, slc1):hier, slc2ist der Ziel-Slice, slc1ist der Quell-Slice. Hier, wenn wir versuchen, in2in1wird2ist nil Slice, dann gibt die copy-Methode die kleinere Länge des Quell-Slice und Ziel-Slice zurück, für den leeren Slice slc2,minimale Länge 0.
Elemente.2copy_3:= copy(slc1):Hier, slc3ist der Ziel-Slice, und1ist der Quell-Slice. hier, slc3Slice leer ist, daher kann wir die Funktion copy() verwenden, um1Slice3wird, da die Länge des5von1Slice5Elemente kopiert werden, da die Länge des5,daher kann nicht speichern kann5,daher kann es mehr als
Elemente.3copy_4:= copy(slc1):hier,slc4ist der Ziel-Slice, undslc1ist der Quell-Slice. Wenn wir versuchen, die Funktion copy() zu verwenden, umslc1 vonslc4 Slice4Elemente. Daslc4 Länge des4Slice4,daher kann es mehr als
Elemente.4copy_1:= copy(slc4,slc4):Hier könnte nach dem Ausgabe eine Verwirrung auftreten. Siehe, die obige Zeile des Codes mit slc4aktualisiert. Daher betrachten wir slc4Elemente, während slc4wird aktualisiert. Daher ist slc1Elemente, während slc9Ein Element. Daher beträgt die Anzahl der zu kopierenden Elemente4。
Beispiel2:
package main import "fmt" func main() { //Quell-Slice slice_1 := []string{"w3codeboxs", "for", "w3codeboxs", "GFG"} //Erstellen des Ziel-Slice, verwenden Sie die Funktion make slice_2 := make([]string, 3) //vor dem Kopieren fmt.Println("Slice_1: ", slice_1) fmt.Println("Slice_2: ", slice_2) //Kopieren von slice_1kopiert in slice_2 Copy_1 := copy(slice_2, slice_1) fmt.Println("\nSlice_1: ", slice_1) fmt.Println("Slice_2: ", slice_2) fmt.Println("Kopierte Elemente: ", Copy_1) //Kopieren des Slice //Verwendung der Kopierfunktion //Klar erkennbar ist der Code Copy_2 := copy(slice_1, []string{"123w3codeboxs", "gfg"}) fmt.Println("\nSlice_1 : ", slice_1) fmt.Println("Kopierte Elemente:", Copy_2) }
Ausgabe:
Slice_1: [w3codeboxs for w3codeboxs GFG] Slice_2: [ ] Slice_1: [w3codeboxs for w3codeboxs GFG] Slice_2: [w3codeboxs for w3codeboxs] Anzahl der kopierten Elemente: 3 Slice_1: [123w3codeboxs gfg w3codeboxs GFG] Anzahl der kopierten Elemente: 2