Maison > Article > développement back-end > Comment la fonction `copy()` de Go fonctionne-t-elle avec des tranches qui se chevauchent ?
Fonction de copie expliquée : un guide complet
La fonction de copie dans Go est utilisée pour dupliquer des éléments d'une tranche source vers une tranche de destination. Il prend deux paramètres : une tranche de destination et une tranche source, qui doivent toutes deux avoir le même type d'élément.
Comment fonctionne copy()
copy() copie éléments de la tranche source à la tranche de destination, mais uniquement jusqu'à la longueur minimale des deux tranches. Si la tranche source est plus courte que la tranche de destination, seuls les éléments de la tranche source sont copiés. À l'inverse, si la tranche de destination est plus courte que la tranche source, seuls les premiers éléments len(dst) sont copiés.
Un aspect important de copy() est qu'il peut gérer des tranches qui se chevauchent. Autrement dit, il peut copier des éléments d’une tranche source vers une tranche de destination partageant le même tableau sous-jacent. Cela peut être utile pour des opérations telles que le déplacement d'éléments ou la réorganisation de tranches.
Exemples de cas d'utilisation
Vous trouverez ci-dessous quelques exemples de la façon dont copy() peut être utilisé :
Création d'une copie d'une tranche :
<code class="go">src := []int{10, 11, 12, 13, 14} dst := make([]int, len(src)) 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]
Copie d'une partie d'une tranche :
<code class="go">src := []int{10, 11, 12, 13, 14} dst := make([]int, 2) n := copy(dst, src[1:]) fmt.Println("n =", n, "src =", src, "dst =", dst)</code>
Sortie :
n = 2 src = [10 11 12 13 14] dst = [11 12]
Tranches superposées :
<code class="go">src := []int{10, 11, 12, 13, 14} dst := src[1:] n := copy(dst, src) fmt.Println("n =", n, "src =", src, "dst =", dst)</code>
Sortie :
n = 4 src = [10 11 12 13 14] dst = [11 12 13 14]
Cas particulier : Copie d'une chaîne vers une tranche d'octets
copy() peut également être utilisée pour copier des octets d'une chaîne vers une tranche d'octets. Ceci est utile pour convertir des chaînes en tableaux d'octets ou pour travailler avec des données d'octets.
Par exemple :
<code class="go">str := "Hello, World!" data := make([]byte, 5) n := copy(data, str) fmt.Println("n =", n, "str =", str, "data =", data)</code>
Sortie :
n = 5 str = Hello, World! data = [72 101 108 108 111]
Conclusion
La fonction de copie de Go est un outil polyvalent pour travailler avec des tranches. Il fournit un moyen concis et efficace de dupliquer des tranches, de copier des parties de tranches et même de gérer des tranches qui se chevauchent. Comprendre le fonctionnement de copy() est essentiel pour une manipulation efficace des tranches dans 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!