Pourquoi ne puis-je pas modifier les valeurs dans une plage de structure de type ?
La spécification du langage de programmation Go indique que pour les instructions avec un clause range, "pour chaque entrée, il attribue des valeurs d'itération aux variables d'itération correspondantes si elles sont présentes, puis exécute le bloc."
Dans ce cas, vous parcourez un tranche de structures à l’aide de l’instruction range. Lorsque vous modifiez un champ d'une structure dans la plage, vous modifiez uniquement la variable d'itération, pas la structure sous-jacente dans la tranche.
Pour modifier la structure sous-jacente, vous devez y accéder directement en utilisant l'index de la variable d'itération.
Par exemple, le code suivant modifie correctement les valeurs dans la tranche :
for i, elem := range chartRecords { elem.Count = modMe(mod, i) chartRecords[i] = elem fmt.Printf("No: %2d | Count: %2d | Name = %s\r\n", i, elem.Count, elem.Name) }
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!