English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Golang Grund教程

Golang Kontrollanweisungen

Golang Funktion & Methode

Golang Struktur

Golang Slice & Array

Golang String(String)

Golang Zeiger

Golang Schnittstelle

Golang Parallelität

Golang Ausnahme(Error)

Andere Aufträge von Golang

Kopieren von Go-Sprach-Slices

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