Maison  >  Article  >  développement back-end  >  Pourquoi ne puis-je pas découper la valeur de retour d'une fonction dans Go ?

Pourquoi ne puis-je pas découper la valeur de retour d'une fonction dans Go ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2024-10-25 02:45:30111parcourir

Why Can't I Slice a Function's Return Value in Go?

Comprendre la différence de comportement des variables et des valeurs de retour de fonction

Dans le code fourni, l'intention est de joindre deux lignes de code qui effectuer une opération spécifique. Cependant, la deuxième tentative entraîne une erreur.

Une erreur se produit dans le 2ème cas

Le message d'erreur "models/models.go:104 : opération non valide sha1. Sum(([]byte)(uf.Pwd))[:] (tranche de valeur non adressable)" suggère un problème de découpage dans le second cas. Plus précisément, la tentative de découper la valeur de retour de l'appel de fonction sha1.Sum() est à l'origine du problème.

Raison du problème

Les valeurs de retour de la fonction dans Go sont non adressables, ce qui signifie qu'ils ne peuvent pas être utilisés comme opérandes dans des opérations nécessitant une adressabilité. Dans ce cas, le découpage d'un tableau nécessite que le tableau soit adressable.

Valeurs de retour de la fonction

Seules les entités suivantes dans Go sont adressables :

  • Variables
  • Indirections de pointeurs
  • Opérations d'indexation de tranches
  • Sélecteurs de champs de structures adressables
  • Opérations d'indexation de tableaux de tableaux adressables

Solution et premier cas

Le premier cas fonctionne correctement car la valeur de retour de sha1.Sum() est d'abord stockée dans une variable locale (hachage) qui est adressable. Cette variable locale peut ensuite être utilisée dans des opérations ultérieures, notamment le slicing.

Conclusion

Pour éviter des erreurs comme celle rencontrée dans le 2ème cas, il est important de comprendre les règles d’adressabilité dans Go. Les valeurs de retour de la fonction ne sont pas adressables et le découpage nécessite que l'opérande du tableau soit adressable.

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