Maison  >  Article  >  développement back-end  >  Comment implémenter l'opération de suppression de tranche dans Golang

Comment implémenter l'opération de suppression de tranche dans Golang

PHPz
PHPzoriginal
2023-04-06 09:12:15549parcourir

Slice est une structure de données courante dans le langage Go. Elle peut être considérée comme une abstraction de tableau. Les tranches ont des opérations plus flexibles que les tableaux, dont la suppression d'éléments. Cet article expliquera comment implémenter l'opération de suppression de tranche dans Golang.

  1. Introduction

Dans Golang, slice est un tableau dynamique il a une forte évolutivité et flexibilité et est l'une des structures de données couramment utilisées dans Golang. Les tranches peuvent ajouter des éléments à la fin via la fonction append(), mais golang ne fournit pas de méthode pour supprimer directement un élément dans la tranche, donc d'autres méthodes doivent être utilisées.

  1. Comment implémenter le découpage et la suppression d'éléments

2.1 Mouvement d'élément de découpage

Une méthode de découpage et de suppression d'éléments consiste à déplacer l'élément entier après l'élément qui doit être supprimé vers l'avant, en couvrant l'élément supprimé. Nous pouvons atteindre l'objectif de suppression d'éléments en déplaçant les éléments derrière l'élément qui doit être supprimé vers l'avant un par un à travers une boucle.

Ce qui suit est un exemple de code pour supprimer en déplaçant des éléments de tranche :

func remove(slice []int, elem int) []int {
    for i := 0; i < len(slice); i++ {
        if slice[i] == elem {
            copy(slice[i:], slice[i+1:])
            slice = slice[:len(slice)-1]
        }
    }
    return slice
}

Dans le code ci-dessus, nous parcourons d'abord la tranche entière, trouvons les éléments qui doivent être supprimés via l'instruction if et utilisons la fonction copy() pour copier les éléments après les éléments qui doivent être supprimés. L'élément avance dans son ensemble, et enfin la longueur de la tranche est réduite de 1 grâce à l'opération de copie de tranche, réalisant ainsi la suppression de l'élément de tranche.

2.2 Échange d'éléments de tranche

L'échange d'éléments de tranche est également un moyen d'obtenir la suppression de tranche. Différent du mouvement d'élément de tranche, il échange la position de l'élément à supprimer avec le dernier élément, puis réduit la longueur de la tranche de 1 pour éviter. L'éventuelle perte de temps ou d'espace provoquée par le mouvement des éléments. Voici un exemple de code :

func remove(slice []int, elem int) []int {
    for i := 0; i < len(slice); i++ {
        if slice[i] == elem {
            slice[i] = slice[len(slice)-1]
            slice = slice[:len(slice)-1]
        }
    }
    return slice
}

Dans le code ci-dessus, nous parcourons également la tranche entière, trouvons l'élément qui doit être supprimé via l'instruction if, échangeons la position de l'élément qui doit être supprimé avec le dernier élément , puis réduisez la longueur de la tranche de 1 pour implémenter le découpage Suppression des éléments.

  1. Résumé

Le découpage est une structure de données courante dans Golang et présente une évolutivité et une flexibilité élevées. Dans Golang, le découpage ne fournit pas de méthode pour supprimer directement un élément, d'autres méthodes doivent donc être utilisées. Cet article présente deux méthodes d'implémentation : le mouvement des éléments de tranche et l'échange d'éléments de tranche. Les lecteurs peuvent choisir la méthode appropriée pour implémenter la suppression de tranche en fonction de leurs besoins spécifiques.

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:
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