Maison  >  Article  >  développement back-end  >  Comment fonctionne la fonction `copy()` dans Go ?

Comment fonctionne la fonction `copy()` dans Go ?

DDD
DDDoriginal
2024-11-03 11:50:29350parcourir

How does the `copy()` function work in Go?

Comment fonctionne la fonction de copie dans Go ?

Malgré la documentation, le fonctionnement de la fonction de copie peut nécessiter des éclaircissements supplémentaires.

Construit- dans Fonction de copie

La fonction de copie transfère les éléments d'une tranche source vers une tranche de destination du même type d'élément. Notez que la copie peut copier des octets d'une chaîne vers une tranche d'octets.

La signature de la fonction de copie est :

<code class="go">func copy(dst, src []Type) int</code>

Où :

  • dst est le tranche de destination.
  • src est la tranche source.
  • La valeur de retour est le nombre d'éléments copiés.

Opération de fonction de copie

copie copie essentiellement les éléments de src vers dst jusqu'au minimum d'éléments len(src) et len(dst). Cela signifie qu'il garantit que la tranche de destination peut accueillir tous les éléments de la tranche source sans dépasser sa capacité.

Exemple

Considérez le code suivant :

<code class="go">package main

import "fmt"

func main() {
    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, la tranche src entière est copiée dans la tranche dst, ce qui fait que les deux tranches ont les mêmes éléments.

Tranches superposées

La fonction de copie peut également être utilisé avec des tranches qui se chevauchent. Par exemple :

<code class="go">copy(src, src[1:])
fmt.Println("n =", n, "src =", src)</code>

Sortie :

n = 4 src = [1 2 3 4 4]

Dans ce scénario, le premier élément de src est exclu de la copie et les quatre éléments restants sont effectivement décalés d'un index vers la gauche , écrasant le premier élément par le dernier élément.

Cas particulier : copie de chaînes dans des tranches d'octets

Comme mentionné précédemment, la copie permet de copier des octets d'une chaîne vers une tranche d'octets. Voici un 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]

La fonction de copie copie les cinq premiers octets de la représentation UTF-8 de la chaîne dans la tranche de données.

Conclusion

La fonction de copie offre un moyen efficace de transférer des éléments entre les tranches, même lorsqu'elles partagent une mémoire qui se chevauche. Sa polyvalence en fait un outil précieux dans la programmation 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!

Déclaration:
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