Maison > Article > développement back-end > Comment fonctionne la fonction Go « copie » avec des tranches qui se chevauchent ?
Le langage de programmation Go fournit une fonction de copie intégrée qui facilite la copie d'éléments d'une tranche à une autre. Selon la documentation, la copie fonctionne en copiant des éléments d'une tranche source vers une tranche de destination. Notamment, si la destination est une tranche d'octets, la source peut être une chaîne.
La signature de la fonction de copie est la suivante :
<code class="go">func copy(dst, src []Type) int</code>
où dst et src représentent respectivement les tranches de destination et de source. La valeur de retour est un entier indiquant le nombre d'éléments copiés, qui est le minimum des longueurs des deux tranches.
Pour illustrer le fonctionnement de la copie, considérons l'exemple suivant :
<code class="go">src := []int{10, 11, 12, 13, 14} dst := []int{0, 1, 2, 3, 4} n := copy(dst, src) fmt.Println("n =", n, "src =", src, "dst =", dst)</code>
Sortie :
n = 5 src = [10 11 12 13 14] dst = [10 11 12 13 14]
Dans cet exemple, les cinq éléments de la tranche source ont été copiés dans la tranche de destination, ce qui fait que la tranche de destination a les mêmes éléments que la tranche source .
Une caractéristique intéressante de la copie est qu'elle peut gérer des tranches qui se chevauchent. Le chevauchement fait référence au scénario dans lequel les tranches de destination et source partagent le même tableau sous-jacent. Même dans de tels cas, la copie fonctionne correctement, comme le démontre l'exemple suivant :
<code class="go">copy(src, src[1:]) fmt.Println("n =", n, "src =", src)</code>
Sortie :
n = 4 src = [1 2 3 4 4]
Dans cet exemple, src[1:] est utilisé comme source , à l'exclusion du premier élément. Étant donné que la source comporte quatre éléments, quatre éléments ont été copiés, ce qui a entraîné le décalage des éléments d'un index.
La fonction de copie permet également de copier des octets d'une chaîne vers une tranche d'octets. Le code suivant le démontre :
<code class="go">str := "Hello, World!" data := make([]byte, 5) n = copy(data, str) fmt.Println("n =", n, "str =", str, "data =", data) fmt.Printf("data as string: %s\n", data)</code>
Sortie :
n = 5 str = Hello, World! data = [72 101 108 108 111] data as string: Hello
La fonction de copie est un outil utile dans Go pour copier des éléments entre des tranches. Il gère à la fois les tranches régulières et superposées, et permet même de copier des octets depuis des chaînes vers des tranches d'octets. Comprendre le comportement de la fonction est essentiel pour une manipulation efficace des tranches dans les programmes Go.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!