Maison > développement back-end > Golang > Comment supprimer efficacement les chaînes des tranches dans Go ?

Comment supprimer efficacement les chaînes des tranches dans Go ?

Linda Hamilton
Libérer: 2024-11-01 07:52:02
original
352 Les gens l'ont consulté

How to Efficiently Remove Strings from Slices in Go?

Suppression d'éléments de tranches de chaînes dans Go

Dans Go, une tranche de chaînes peut constituer une structure de données précieuse pour gérer des collections de texte. Cependant, il devient parfois nécessaire de supprimer des chaînes spécifiques de ces tranches. Cet article aborde le défi courant de la suppression de chaînes de tranches dans Go.

Recherche et suppression d'une chaîne spécifique

Pour supprimer une chaîne d'une tranche, nous devons d'abord identifier sa position à l’aide d’une recherche linéaire. Nous parcourons la tranche, en comparant chaque élément avec la chaîne que nous avons l'intention de supprimer. Une fois trouvée, la chaîne peut être supprimée à l'aide d'astuces de tranche, comme démontré ci-dessous :

<code class="go">for i, v := range strings {
    if v == "two" {
        strings = append(strings[:i], strings[i+1:]...)
        break
    }
}</code>
Copier après la connexion

Une astuce de tranche alternative qui permet d'obtenir le même résultat est :

<code class="go">for i, v := range strings {
    if v == "two" {
        strings = strings[:i+copy(strings[i:], strings[i+1:])]
        break
    }
}</code>
Copier après la connexion

Exemple d'implémentation

En utilisant la technique décrite ci-dessus, l'extrait de code suivant démontre la suppression de la chaîne « deux » de la tranche :

<code class="go">strings := []string{"one", "two", "three"}
for i, v := range strings {
    if v == "two" {
        strings = append(strings[:i], strings[i+1:]...)
        break
    }
}
fmt.Println(strings) // Output: [one three]</code>
Copier après la connexion

Fonction Wrapper

Pour simplifier davantage le processus, nous pouvons envelopper l'opération de suppression dans une fonction :

<code class="go">func remove(s []string, r string) []string {
    for i, v := range s {
        if v == r {
            return append(s[:i], s[i+1:]...)
        }
    }
    return s
}</code>
Copier après la connexion

Utilisation de cette fonction :

<code class="go">s := []string{"one", "two", "three"}
s = remove(s, "two")
fmt.Println(s) // Output: [one three]</code>
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal