Maison > développement back-end > Golang > le corps du texte

Comment fonctionne la fonction Go « copie » avec des tranches qui se chevauchent ?

Mary-Kate Olsen
Libérer: 2024-10-31 03:44:31
original
514 Les gens l'ont consulté

How does the Go `copy` function work with overlapping slices?

Comprendre la fonction de copie en détail

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.

Signature et comportement de la fonction

La signature de la fonction de copie est la suivante :

<code class="go">func copy(dst, src []Type) int</code>
Copier après la connexion

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.

Copie d'éléments

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>
Copier après la connexion

Sortie :

n = 5 src = [10 11 12 13 14] dst = [10 11 12 13 14]
Copier après la connexion

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 .

Copie avec des tranches qui se chevauchent

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>
Copier après la connexion

Sortie :

n = 4 src = [1 2 3 4 4]
Copier après la connexion

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.

Cas particulier pour les chaînes

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>
Copier après la connexion

Sortie :

n = 5 str = Hello, World! data = [72 101 108 108 111]
data as string: Hello
Copier après la connexion

Conclusion

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!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal