Maison  >  Article  >  développement back-end  >  ajout et suppression de tranches de golang

ajout et suppression de tranches de golang

WBOY
WBOYoriginal
2023-05-22 16:19:07694parcourir

Golang slice est une structure de données très couramment utilisée. Il s'agit d'un tableau dynamique qui prend en charge l'expansion automatique et peut facilement utiliser et modifier les données dans le programme. La longueur de la tranche peut être modifiée dynamiquement, ce qui apporte beaucoup de flexibilité à notre code. L'ajout et la suppression d'éléments sont une opération très courante lors de l'utilisation de slice. Cet article explique comment ajouter et supprimer des éléments dans golang slice.

  1. Opérations de base de Golang Slice

Passons d'abord en revue les opérations de base de Golang Slice pour mieux comprendre le processus d'ajout et de suppression d'éléments. En golang, pour définir une tranche, vous devez utiliser la fonction make. Cette fonction contient trois paramètres Le premier spécifie le type de tranche, le second spécifie la longueur de la tranche et le troisième spécifie la capacité de. la tranche.

Par exemple :

var s = make([]int, 3, 5)

Le code ci-dessus définit une tranche de type int d'une longueur de 3 et d'une capacité de 5. Le premier paramètre est le type int que nous avons défini et le deuxième paramètre spécifie la longueur de la tranche 3. Le troisième paramètre spécifie que la capacité de la tranche est de 5. Il est à noter que la capacité d'une tranche peut être supérieure à la longueur, mais que la longueur ne peut pas être supérieure à la capacité.

Voici quelques opérations de base de Golang Slice :

1) Accédez à l'élément slice

var s = []int {1, 2, 3, 4, 5}
fmt.Println(s[0])  // 输出1

2) Modifier l'élément slice

var s = []int {1, 2, 3, 4, 5}
s[0] = 6
fmt.Println(s)  // 输出[6 2 3 4 5]

3) Obtenez la longueur et la capacité de la tranche

var s = make([]int, 3, 5)
fmt.Println(len(s))  // 输出3
fmt.Println(cap(s))  // 输出5

4) Opération de tranche

var s = []int {1, 2, 3, 4, 5}
fmt.Println(s[1:3])  // 输出[2 3]
  1. Opération d'ajout d'éléments slice golang

Dans golang, il existe deux façons d'ajouter des éléments slice, à savoir en utilisant la fonction append et l'opérateur "+".

Maintenant, nous allons présenter respectivement l'utilisation de ces deux méthodes.

1) Utilisez la fonction append pour ajouter des éléments

Dans Golang, nous pouvons utiliser la fonction append pour ajouter dynamiquement des éléments de tranche. Sa syntaxe est la suivante :

func append(s []T, vs ...T) []T

Parmi eux, le premier paramètre s est une tranche de type T, et le paramètre suivant vs est une liste de paramètres variables, également de type T, indiquant l'élément à ajouter. La valeur de retour de cette fonction est une nouvelle tranche contenant les éléments ajoutés.

Par exemple :

var s = []int {1, 2, 3, 4, 5}
s = append(s, 6)
fmt.Println(s)  // 输出[1 2 3 4 5 6]

Dans le code ci-dessus, nous utilisons la fonction append pour ajouter un élément 6 à la tranche, puis enregistrons le résultat dans la tranche d'origine.

Si nous voulons ajouter plusieurs éléments à la tranche, il suffit de transmettre ces éléments après la fonction append. Par exemple :

var s = []int {1, 2, 3, 4, 5}
s = append(s, 6, 7, 8)
fmt.Println(s)  // 输出[1 2 3 4 5 6 7 8]

Il est à noter que si la capacité de la tranche est insuffisante, la fonction append augmentera automatiquement sa capacité, donc sa complexité temporelle est O(1).

2) Utilisez l'opérateur "+" pour ajouter des éléments

En plus d'utiliser la fonction d'ajout, vous pouvez également utiliser l'opérateur "+" dans Golang pour fusionner deux tranches. Les opérandes de cet opérateur sont tous des tranches, et le résultat est également une nouvelle tranche.

Par exemple, comme indiqué ci-dessous :

var s1 = []int {1, 2, 3}
var s2 = []int {4, 5, 6}
s := s1 + s2
fmt.Println(s)  // 输出[1 2 3 4 5 6]

Dans cet exemple, nous ajoutons deux tranches et obtenons une nouvelle tranche s. Il est à noter que la complexité temporelle de l'opérateur "+" est O(n), car il nécessite d'ouvrir un nouveau tableau et de copier les éléments des deux tranches dans le nouveau tableau.

  1. Opération de suppression d'élément de golang slice

Si vous souhaitez supprimer un élément dans golang slice, il existe deux méthodes, à savoir utiliser la fonction append et utiliser la fonction de copie.

1) Utilisez la fonction append pour supprimer des éléments

Nous pouvons utiliser l'opération de découpage de la fonction append pour intercepter l'élément à supprimer et les éléments derrière lui, puis utiliser la fonction append pour les recombiner. L'implémentation spécifique est la suivante :

func Remove(slice []int, idx int) []int {
    return append(slice[:idx], slice[idx+1:]...)
}

func main() {
    var s = []int {1, 2, 3, 4, 5}
    s = Remove(s, 2)
    fmt.Println(s)  // 输出[1 2 4 5]
}

Dans ce code, nous utilisons la fonction Remove pour supprimer le troisième élément de la tranche. Tout d’abord, nous combinons les éléments de slice0 à idx-1 et les éléments de slice idx+1 jusqu’à la fin dans une nouvelle tranche. Ensuite, nous utilisons la fonction append pour enregistrer cette nouvelle tranche dans la tranche d'origine. Étant donné que la fonction d'ajout augmentera automatiquement la capacité, vous n'avez pas à vous soucier de la capacité insuffisante de la nouvelle tranche.

Il convient de noter que la complexité temporelle de cette méthode est O(n), car elle doit copier n-1 éléments dans la nouvelle tranche.

2) Utilisez la fonction de copie pour supprimer des éléments

En plus d'utiliser la fonction d'ajout, nous pouvons également utiliser la fonction de copie pour supprimer des éléments dans la tranche golang. La fonction copy peut copier les éléments de la tranche src vers la tranche dst et renvoyer le nombre d'éléments copiés.

L'implémentation spécifique est la suivante :

func Remove(slice []int, idx int) []int {
    copy(slice[idx:], slice[idx+1:])
    return slice[:len(slice)-1]
}

func main() {
    var s = []int {1, 2, 3, 4, 5}
    s = Remove(s, 2)
    fmt.Println(s)  // 输出[1 2 4 5]
}

Dans ce code, nous utilisons la fonction Remove pour supprimer le troisième élément de la tranche. Utilisez la fonction de copie pour copier tous les éléments après idx+1 vers la position idx, puis réduisez la longueur de la tranche d'origine de 1.

Il convient de noter que la complexité temporelle de cette méthode est également O(n), car elle doit copier n-1 éléments dans la nouvelle tranche.

  1. Résumé

Cet article présente principalement les opérations d'ajout et de suppression d'éléments dans Golang Slice. Vous pouvez utiliser la fonction d'ajout et l'opérateur "+" pour ajouter des éléments, et vous pouvez utiliser la fonction d'ajout et la fonction de copie pour supprimer des éléments.

Il est recommandé de choisir différentes méthodes en fonction de la situation spécifique de la programmation réelle. Si vous souhaitez ajouter ou supprimer un petit nombre d'éléments, il est plus pratique d'utiliser la fonction append ou l'opérateur "+" ; si vous souhaitez ajouter ou supprimer un grand nombre d'éléments, il est plus efficace d'utiliser la fonction de copie ; fonction.

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
Article précédent:vscode construit GolangArticle suivant:vscode construit Golang