Maison > développement back-end > Golang > Comment copier en profondeur une tranche en Go : ajouter ou copier ?

Comment copier en profondeur une tranche en Go : ajouter ou copier ?

Mary-Kate Olsen
Libérer: 2025-01-01 03:44:10
original
664 Les gens l'ont consulté

How to Deep Copy a Slice in Go: Append vs. Copy?

Comment copier en profondeur une tranche dans Go de manière concise et efficace

Dans Go, la copie de tranches nécessite d'envisager la création d'un nouveau tableau de sauvegarde afin d'éviter des modifications involontaires du tableau d'origine . Il existe plusieurs façons concises et efficaces d'y parvenir.

Une approche consiste à utiliser la fonction append :

copy := append([]T{}, orig...)
Copier après la connexion

où T est le type d'élément de l'origine de la tranche d'origine. Cependant, une solution alternative existe utilisant la fonction de copie intégrée :

cpy := make([]T, len(orig))
copy(cpy, orig)
Copier après la connexion

La fonction de copie est optimisée pour copier des tranches au sein de la langue. Extrait de la documentation Go :

"La fonction intégrée de copie copie les éléments d'une tranche source dans une tranche de destination. ... Copy renvoie le nombre d'éléments copiés, qui sera le minimum de len(src) et len(dst)."

Remarque :

Il est important de se rappeler que ces solutions copient les valeurs dans la tranche. Si la tranche contient des pointeurs ou des structures avec des champs de pointeur, ces pointeurs pointeront toujours vers les mêmes valeurs que la tranche d'origine.

Benchmark :

Test de l'ajout et de la copie les approches révèlent des caractéristiques de performances similaires :

BenchmarkCopy     100000         24724 ns/op
BenchmarkAppend   100000         24967 ns/op
Copier après la connexion

Les résultats de référence suggèrent que les deux méthodes sont tout aussi efficaces pour la copie approfondie tranches.

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