Maison > Article > développement back-end > Comment insérer une valeur dans une tranche Go à un index spécifique sans affecter les autres éléments ?
Question :
Comment pouvons-nous insérer une valeur dans un index spécifique dans une tranche Go sans inclure d'autres éléments ?
Description du problème :
Supposons que nous ayons deux tranches, array1 et array2, et que nous voulions insérer array2[2 ] dans le tableau1[1]. Nous voulons garder le reste du tableau1 intact.
Contexte :
Les techniques antérieures impliquaient l'utilisation de l'opérateur deux-points (:), mais elles incluent également des éléments ultérieurs. Ce tutoriel vise à fournir une solution complète axée sur l'insertion de valeurs uniques à un index spécifique.
Solution :
Utilisation du package slices.Insert (Go 1.21 ):
result := slices.Insert(slice, index, value)
Remarque : 0 ≤ index ≤ len(slice)
Utilisation de l'ajout et de l'affectation
a = append(a[:index+1], a[index:]...) a[index] = value
Remarque : len(a) > 0 && indice < len(a)
Pour les cas particuliers :
Si len(a) == index, faites :
a = append(a, value)
Si vous insérez à l'index zéro et traitez une tranche int, faites :
a = append([]int{value}, a...)
Fonction personnalisée :
func insert(a []int, index int, value int) []int { if len(a) == index { return append(a, value) } a = append(a[:index+1], a[index:]...) a[index] = value return a }
Fonction générique :
func insert[T any](a []T, index int, value T) []T { ... return a }
Exemple :
slice1 := []int{1, 3, 4, 5} slice2 := []int{2, 4, 6, 8} slice1 = append(slice1[:2], slice1[1:]...) slice1[1] = slice2[2] fmt.Println(slice1) // [1 6 3 4 5]
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!