Maison > développement back-end > Golang > le corps du texte

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
416 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!

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