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

Comment la fonction `copy()` de Go fonctionne-t-elle avec des tranches qui se chevauchent ?

Barbara Streisand
Libérer: 2024-11-01 02:19:28
original
589 Les gens l'ont consulté

How Does Go's `copy()` Function Work With Overlapping Slices?

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

    Sortie :

    n = 2 src = [10 11 12 13 14] dst = [11 12]
    Copier après la connexion
  • 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>
    Copier après la connexion

    Sortie :

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

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

Sortie :

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

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!

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
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!