Malgré la documentation, le fonctionnement de la fonction de copie peut nécessiter des éclaircissements supplémentaires.
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ù :
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é.
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.
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.
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.
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!