Maison > développement back-end > Golang > Comment copier efficacement une tranche en Go ?

Comment copier efficacement une tranche en Go ?

Barbara Streisand
Libérer: 2024-12-09 18:15:15
original
1057 Les gens l'ont consulté

How to Efficiently Deep Copy a Slice in Go?

Copie approfondie d'une tranche dans Go

Dans Go, créer efficacement une copie complète d'une tranche est essentiel pour éviter toute modification du tableau de sauvegarde d'origine. Une approche couramment utilisée consiste à utiliser un littéral slice et la fonction append :

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

Cependant, il existe une méthode alternative qui utilise la fonction de copie intégrée :

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

Cette approche récupère le stockage requis et copie directement les éléments de la source vers la destination à l'aide de la fonction intégrée de copie. Selon la documentation :

func copy(dst, src []Type) int
Copier après la connexion
The copy built-in function copies elements from a source slice into a
destination slice. ... Copy returns the number of elements copied, which will be the minimum
of len(src) and len(dst).
Copier après la connexion

Remarque :

Les deux méthodes effectuent une copie superficielle, ce qui signifie que les pointeurs ou les champs de structure dans la tranche pointeront toujours aux valeurs d'origine.

Benchmark :

Comparaison des performances des deux techniques donne des résultats similaires :

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

Cela suggère que les deux approches sont également adaptées à la copie profonde de tranches dans Go. Cependant, l'approche de la fonction de copie peut être légèrement plus efficace lorsqu'il s'agit de tranches volumineuses.

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