Maison  >  Article  >  développement back-end  >  golang supprimer le tableau

golang supprimer le tableau

WBOY
WBOYoriginal
2023-05-15 09:09:36779parcourir

En langage Go, un tableau est une structure de données de longueur fixe. Une fois créée, sa longueur ne peut pas être modifiée. Mais dans certains cas, nous devons augmenter ou diminuer dynamiquement les éléments du tableau. Que devons-nous faire à ce moment-là ? En fait, le langage Go propose quelques méthodes pour supprimer des éléments d’un tableau. Cet article en présentera plusieurs.

1. Utiliser des tranches

Slice est un tableau dynamique en langage Go, qui est obtenu en coupant le tableau. Bien que la couche sous-jacente d'une tranche soit un tableau, sa longueur n'est pas fixe et des éléments peuvent être ajoutés ou réduits dynamiquement selon les besoins. Par conséquent, utiliser le découpage pour supprimer des éléments d’un tableau est une approche courante.

Nous pouvons utiliser la fonction intégrée de slice append() pour supprimer des éléments du tableau. Supposons que vous souhaitiez supprimer l'élément idx du tableau arr. Vous pouvez d'abord découper le tableau en deux parties, prendre l'élément à supprimer du tableau, puis combiner. les deux parties. Assemblez les parties ensemble et enregistrez enfin le résultat dans le tableau d'origine. append() 来移除数组中的元素。假设要移除数组 arr 的第 idx 个元素,可以先将数组切片为两部分,并将要删除的元素从数组中取出,然后再将这两部分拼接起来,最后再将结果保存到原数组中。

下面是一个示例代码:

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

arr := []int{1, 2, 3, 4, 5}
idx := 2
arr = removeItem(arr, idx)
fmt.Println(arr) // [1 2 4 5]

此代码中,我们通过内置函数 append() 将第 idx 个元素从切片中移除,移除后返回一个新的切片,该切片是将原数组 arr 分为两部分,即 arr[:idx]arr[idx+1:]。这两部分再通过 append() 函数进行连接,最终得到的结果就是将原数组中的元素移除后的新数组。

二、使用空白符

另一种移除数组元素的方法是使用Go语言中的空白符。空白符实际上是一个特殊的标识符,用于表示当我们接收一个函数返回的值时不需要实际使用这个返回值。在数组中使用空白符,可以将数组中的某一元素设置为空,达到移除的效果。

示例如下:

arr := []int{1, 2, 3, 4, 5}
idx := 2
arr[idx] = arr[len(arr)-1]
arr[len(arr)-1] = 0
arr = arr[:len(arr)-1]
fmt.Println(arr) // [1 2 4 5]

这里使用空白符 0 将索引为 len(arr)-1 的元素设置为空,并将这个空元素从数组末尾删除,从而实现了移除元素的效果。

需要注意的是,虽然这种方法可以移除元素,但是并不会改变数组长度,因此在后续的操作中,我们需要特别格外小心。

三、使用copy函数

Go语言的内置函数 copy() 可以将一个切片复制到另一个切片中,也可以将一个数组的一部分复制到同一数组的另一部分中。因此,我们可以利用 copy() 函数来移除数组中的元素。

示例如下:

arr := []int{1, 2, 3, 4, 5}
idx := 2
copy(arr[idx:], arr[idx+1:])
arr[len(arr)-1] = 0
arr = arr[:len(arr)-1]
fmt.Println(arr) // [1 2 4 5]

此代码中,我们先使用 copy() 函数将从 arr[idx+1:] 开始的元素复制到 arr[idx:] 中,从而将 idx

Ce qui suit est un exemple de code :

arr := []int{1, 2, 3, 4, 5}
idx := 2
for i := idx + 1; i < len(arr); i++ {
    arr[i-1] = arr[i]
}
arr = arr[:len(arr)-1]
fmt.Println(arr) // [1 2 4 5]

Dans ce code, nous utilisons la fonction intégrée append() pour supprimer l'élément idx de la tranche After. Removal Renvoie une nouvelle tranche, qui divise le tableau d'origine arr en deux parties, à savoir arr[:idx] et arr[idx+1:]. Les deux parties sont ensuite connectées via la fonction <code>append(), et le résultat final est un nouveau tableau après avoir supprimé les éléments du tableau d'origine.

2. Utilisez le caractère d'espacement

Une autre façon de supprimer des éléments d'un tableau consiste à utiliser le caractère d'espacement dans le langage Go. Le caractère espace est en fait un identifiant spécial utilisé pour indiquer que lorsque nous recevons la valeur renvoyée par une fonction, nous n'avons pas besoin d'utiliser réellement la valeur de retour. L'utilisation du caractère d'espacement dans un tableau peut définir un élément du tableau comme étant vide pour obtenir l'effet de suppression.

L'exemple est le suivant :

rrreee

Ici, utilisez le caractère d'espacement 0 pour définir l'élément avec l'index len(arr)-1 sur vide, et supprimez-le. élément vide à la fin du tableau Supprimer, obtenant ainsi l'effet de supprimer des éléments.

Il convient de noter que bien que cette méthode puisse supprimer des éléments, elle ne modifiera pas la longueur du tableau, nous devons donc être particulièrement prudents lors des opérations ultérieures.

3. Utilisez la fonction de copie 🎜🎜La fonction intégrée du langage Go copy() peut copier une tranche vers une autre tranche, ou copier une partie d'un tableau vers une autre partie du même tableau. Par conséquent, nous pouvons utiliser la fonction copy() pour supprimer des éléments du tableau. 🎜🎜L'exemple est le suivant : 🎜rrreee🎜Dans ce code, on utilise d'abord la fonction copy() pour copier les éléments à partir de arr[idx+1:] à arr[idx:], supprimant ainsi l'élément idx. Ensuite, définissez le dernier élément du tableau sur vide et supprimez enfin l'élément vide via le découpage. 🎜🎜Il convient de noter que, comme le tableau est un type valeur, pas un type référence, nous devons utiliser le découpage pour copier le tableau, puis enregistrer le résultat dans le tableau d'origine après modification. 🎜🎜4. Utiliser des boucles🎜🎜La dernière façon de supprimer des éléments d'un tableau consiste à utiliser des boucles. Nous pouvons supprimer l’élément en le déplaçant vers l’arrière dans une boucle. 🎜🎜L'exemple est le suivant : 🎜rrreee🎜Ici, il parcourt chaque élément après l'élément qui doit être supprimé, l'avance d'un bit et supprime enfin les éléments redondants. Cette méthode est plus lourde, mais elle est aussi très pratique. 🎜🎜Résumé🎜🎜La suppression d'éléments de tableau est une opération de base dans le langage Go. Le langage Go fournit une variété de méthodes pratiques et efficaces pour implémenter cette opération. Vous pouvez facilement supprimer des éléments d'un tableau, que ce soit en utilisant le découpage, les espaces, la fonction de copie ou une boucle. En fonction de la situation réelle, nous pouvons choisir la méthode la plus appropriée pour atteindre l'objectif. 🎜

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:golang définir icmp ttlArticle suivant:golang définir icmp ttl