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...)
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)
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
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!