Maison >développement back-end >Golang >Comment utiliser la plage pour modifier des éléments dans des tableaux/tranches/cartes et canaux

Comment utiliser la plage pour modifier des éléments dans des tableaux/tranches/cartes et canaux

PHPz
PHPzoriginal
2023-04-05 10:29:22823parcourir

Lors de la programmation en Golang, nous utilisons souvent le mot-clé range, qui est utilisé pour parcourir des structures de données telles que des tableaux, des tranches, des cartes et des canaux. Cependant, lors du processus de parcours, si nous souhaitons modifier les éléments parcourus, nous rencontrerons quelques problèmes. Cet article explique comment utiliser la plage pour modifier des éléments dans des tableaux, des tranches, des cartes et des canaux.

  1. Modifier les éléments d'un tableau et d'une tranche

Lors du parcours de tableaux et de tranches, le mot-clé range renvoie une copie de l'élément, pas l'élément lui-même. Par conséquent, si nous voulons modifier un élément, nous devons utiliser le pointeur de l’élément. Voici un exemple de code pour modifier les éléments d'un tableau et d'une tranche :

arr := [3]int{1, 2, 3}
for i := range arr {
  temp := &arr[i]
  *temp = *temp*2
}

slice := []int{1, 2, 3}
for i := range slice {
  temp := &slice[i]
  *temp = *temp*2
}

La variable temporaire temp est utilisée dans le code pour enregistrer le pointeur de l'élément et modifier la valeur de l'élément via le pointeur.

  1. Modifier les éléments de la carte

Lors de la traversée de la carte, le mot-clé range renvoie une copie de la paire clé-valeur, pas l'élément lui-même. Ainsi, si nous voulons modifier un élément, nous devons utiliser la clé pour accéder à l'élément et modifier sa valeur. Voici un exemple de code qui modifie un élément de la carte :

oldMap := map[string]int{"a": 1, "b": 2, "c": 3}
newMap := make(map[string]int)
for k, v := range oldMap {
  newMap[k] = v*2
}

Dans le code, lors du parcours de la carte, la clé permet d'accéder à l'élément et de modifier sa valeur. Notez que vous n'avez pas besoin d'utiliser des pointeurs lors de la modification des valeurs des éléments de la carte.

  1. Modifier les éléments du canal

Lors de la traversée du canal, le mot-clé range renvoie une copie de l'élément, pas l'élément lui-même. Par conséquent, si nous voulons modifier les éléments du canal, nous devons utiliser l'opération d'envoi du canal pour modifier la valeur dans le canal. Voici un exemple de code pour modifier des éléments dans le canal :

ch := make(chan int, 3)
ch <- 1
ch <- 2
ch <- 3

for i := range ch {
  ch <- i*2
}

Dans le code, l'opération d'envoi du canal est utilisée pour modifier la valeur de l'élément au double de sa valeur d'origine. Il est à noter que lors de la modification d'éléments dans un canal, l'opération d'envoi du canal doit être utilisée pour envoyer la valeur modifiée au canal.

Résumé :

Lorsque nous utilisons le mot-clé range pour parcourir des tableaux, des tranches, des cartes et des canaux, si nous voulons modifier les éléments traversés, nous devons utiliser le pointeur de l'élément (tableau et tranche) et utiliser la clé pour accéder l'élément (carte). Ou utilisez l'opération d'envoi du canal pour modifier la valeur de l'élément (canal). Il convient de noter que lorsque vous utilisez la plage pour modifier des éléments, vous devez faire attention à ne pas causer de problèmes tels que des boucles infinies ou des conditions de course dans la boucle.

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