Maison > développement back-end > Golang > Comment insérer une valeur dans une tranche Go à un index spécifique sans affecter les autres éléments ?

Comment insérer une valeur dans une tranche Go à un index spécifique sans affecter les autres éléments ?

DDD
Libérer: 2024-11-19 06:57:03
original
505 Les gens l'ont consulté

How to Insert a Value into a Go Slice at a Specific Index Without Affecting Other Elements?

Insérer une valeur dans une tranche à un index donné

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)
Copier après la connexion

Remarque : 0 ≤ index ≤ len(slice)

Utilisation de l'ajout et de l'affectation

a = append(a[:index+1], a[index:]...)
a[index] = value
Copier après la connexion

Remarque : len(a) > 0 && indice < len(a)

Pour les cas particuliers :

  • Si len(a) == index, faites :

    a = append(a, value)
    Copier après la connexion
  • Si vous insérez à l'index zéro et traitez une tranche int, faites :

    a = append([]int{value}, a...)
    Copier après la connexion

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
}
Copier après la connexion

Fonction générique :

func insert[T any](a []T, index int, value T) []T {
    ...
    return a
}
Copier après la connexion

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]
Copier après la connexion

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!

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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal