Problème :
Étant donné deux tranches entières, tableau1 et tableau2 , le but est d'insérer un élément du tableau2 à un index spécifique du tableau1 tout en conservant l'ordre des éléments existants. Dans l'exemple fourni, cela signifie insérer array2[2], qui vaut 6, dans array1[1], ce qui fait que array1 devient [1, 6, 3, 4, 5].
Solution utilisant l'opérateur : :
L'approche traditionnelle pour insérer une valeur dans une tranche consiste à utiliser l'opérateur : pour créer une nouvelle tranche. Cependant, cette technique entraîne généralement l'insertion d'éléments supplémentaires, ce qui n'est pas le comportement souhaité dans ce cas.
Solutions alternatives :
1. Go 1.21 slices.Insert Function :
Avec la sortie de Go 1.21, une fonction slices.Insert dédiée a été introduite pour simplifier le processus d'insertion de valeurs dans les tranches. Sa syntaxe est la suivante :
result = slices.Insert(slice, index, value)
Cette fonction prend trois arguments : la tranche d'origine, l'index auquel la valeur doit être insérée et la valeur elle-même. Il insère la valeur à l'index spécifié, en décalant tous les éléments suivants dans la tranche vers la droite.
2. Insertion manuelle :
Une autre approche implique un processus en deux étapes :
3. Fonction générique :
Une fonction d'insertion générique peut être implémentée pour gérer des tranches de tout type :
func insert[T any](a []T, index int, value T) []T
Cette fonction suit une approche similaire à la méthode d'insertion manuelle mais offre une flexibilité en lui permettant d'être utilisé avec des tranches de différents types.
4. Utilisation de Make et Copy :
Une autre option consiste à utiliser la fonction make pour créer une nouvelle tranche avec la capacité souhaitée, puis à utiliser la fonction copy pour copier les éléments existants tout en insérant la valeur à l'index spécifié. :
b := make([]int, len(a)+1) copy(b[:index], a) b[index] = value copy(b[index+1:], a[index:])
Benchmarks :
Les benchmarks de performances montrent que la fonction slices.Insert est la plus efficace, suivie de la fonction d'insertion générique. Dans l'ensemble, la méthode la plus appropriée dépend des exigences spécifiques du programme et de la version de Go utilisée.
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!