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

Tutoriel de base Go

Instructions de contrôle Go

Fonction & Méthode Go

Structure Go

Tranche & Tableau Go

Chaîne de caractères Go (String)

Pointeur Go

Interface Go

Concurrence Go

Exception Go

Autres éléments Go

Copie de tranche en langage Go

Trancheest pour les éléments de types similaires, il n'est pas permis de stocker des éléments de types différents dans une même séquence de longueur variable. Dans une tranche, vous pouvez utiliser les tranches fournies par le langage Go.Fonction copy()Copier une tranche dans une autre tranche. Autrement dit, vous pouvez copier les éléments d'une tranche dans une autre tranche à l'aide de la fonction copy().

Syntaxe :

func copy(dst, src []Type) int

ici,dstreprésente la tranche cible, etsrcla tranche source. Il retourne le nombre d'éléments à copier, ce nombre devraitreprésentelen(dst)oulen(src)deLa valeur minimale。Laissez-nous utiliser l'exemple donné pour démontrer comment l'utiliser :

package main
import "fmt"
func main() {
    //Créer une tranche
    slc1 := []int{58, 69, 40, 45, 11, 56, 67, 21, 65}
    var slc2 []int
    slc3 := make([]int, 5)
    slc4 := []int{78, 50, 67, 77}
    //avant la copie
    fmt.Println("Slice_1:", slc1)
    fmt.Println("Slice_2:", slc2)
    fmt.Println("Slice_3:", slc3)
    fmt.Println("Slice_4:", slc4)
    //Copie de la slice
    copy_1 := copy(slc2, slc1)
    fmt.Println("\nTranche :", slc2)
    fmt.Println("Nombre total d'éléments copiés :", copy_1)
    copy_2 := copy(slc3, slc1)
    fmt.Println("\nTranche :", slc3)
    fmt.Println("Nombre total d'éléments copiés :", copy_2)
    copy_3 := copy(slc4, slc1)
    fmt.Println("\nTranche :", slc4)
    fmt.Println("Nombre total d'éléments copiés :", copy_3)
    //Ne pas confondre, car dans le cas précédent
    //a copié slc4ligne de code
    //et par conséquent, effectue une modification permanente, c'est-à-dire
    // slc 4contient [58 69 40 45]
    copy_4 := copy(slc1, slc4)
    fmt.Println("\nTranche :", slc1)
    fmt.Println("Nombre total d'éléments copiés :", copy_4)
}

Sortie : 

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]
Tranche : []
Nombre total d'éléments copiés : 0
Tranche : [58 69 40 45 11]
Nombre total d'éléments copiés : 5
Tranche : [58 69 40 45]
Nombre total d'éléments copiés : 4
Tranche : [58 69 40 45 11 56 67 21 65]
Nombre total d'éléments copiés : 4

Instructions d'utilisation :Dans l'exemple suivant, nous avons quatre tranches de types entiers et nous les copions :

  • copy 1:= copy(slc2, slc1):在这里,slc2, slc1):Ici, slc2est la slice cible, tandis que slc1est la slice source. Ici, lorsque nous essayons de copier dans slc2Lorsque la slice est copiée dans slc2est une slice nil, alors la méthode copy retourne la longueur minimale de la slice source et de la slice cible, pour une slice vide slc

  • copy_2:= copy(slc3,slc1a une longueur minimale de 0.3):Ici, slc1est la slice cible, tandis que slc est la slice source. Ici, lorsque nous essayons de copier dans slc3ici, slc1La slice est une slice vide, par conséquent, lorsque nous essayons d'utiliser la fonction copy() pour copier slc3Lorsque la slice a une longueur de5,par conséquent, elle ne copie que depuis slc1La slice a copié5éléments, car la longueur de la slice est5,par conséquent, elle peut ne peut pas stocker plus de5des éléments.

  • copy_3:= copy(slc4,slc1:):slc4ici,slc1est la slice cible, tandis queslc1 La slice est la slice source. Lorsque nous essayons d'utiliser la fonction copy() pour copierslc4 Lorsque la slice est copiée, elle ne copie que depuis l'index 0 de4éléments. En raison deslc4 La longueur de la slice est4,par conséquent, elle ne peut pas stocker plus de4des éléments.

  • copy_4:= copy(slc1,slc4):Ici, après la sortie, il peut y avoir de la confusion. Voir, dans les lignes de code ci-dessus slc4a été mis à jour. Par conséquent, maintenant considérons slc4a été mise à jour. Par conséquent, maintenant slc4Avec4éléments, tandis que slc1Avec9Un élément. Par conséquent, le nombre total d'éléments à copier est4。

Exemple2:

package main 
  
import "fmt"
  
func main() { 
  
    //Slice source
    slice_1 := []string{"w3codeboxs", "for", "w3codeboxs", "GFG"} 
  
    //Création de la slice cible, en utilisant la fonction make
    slice_2 := make([]string, 3) 
  
    //Avant la copie
    fmt.Println("Slice_1: "1) 
    fmt.Println("Slice_2: "2) 
  
    //Copie de slice_1copié dans slice_2
    Copy_1 := copy(slice_2, slice_1) 
    fmt.Println("\nSlice_1: "1) 
    fmt.Println("Slice_2: "2) 
    fmt.Println("Nombre d'éléments copiés: ", Copy_1) 
  
        //Copie de la slice
        //Utilisation de la fonction de copie
        //On peut voir clairement le code
    Copy_2 := copy(slice_1, []string{"123w3codeboxs", "gfg"}) 
    fmt.Println("\nSlice_1 : "1) 
    fmt.Println("Nombre d'éléments copiés:", Copy_2)   
}

Sortie : 

Slice_1:  [w3codeboxs for w3codeboxs GFG]
Slice_2:  [  ]
Slice_1:  [w3codeboxs for w3codeboxs GFG]
Slice_2:  [w3codeboxs for w3codeboxs]
Nombre d'éléments copiés:  3
Slice_1:  [123w3codeboxs gfg w3codeboxs GFG]
Nombre d'éléments copiés: 2