Maison >développement back-end >Golang >Comment copier efficacement une tranche en 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...)
Cependant, il existe une méthode alternative qui utilise la fonction de copie intégrée :
cpy := make([]T, len(orig)) copy(cpy, orig)
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
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).
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
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!