Maison > développement back-end > Golang > le corps du texte

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

Mary-Kate Olsen
Libérer: 2024-10-24 18:19:02
original
1050 Les gens l'ont consulté

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

Variabilité du comportement des valeurs de retour des variables et des fonctions

En programmation, il est essentiel de comprendre la distinction de comportement entre les variables et les valeurs de retour des fonctions. Considérez l'extrait de code suivant :

<code class="go">hash := sha1.Sum([]byte(uf.Pwd))
u.Pwhash = hex.EncodeToString(hash[:])</code>
Copier après la connexion
Copier après la connexion

Ce code fonctionne comme prévu, où la variable de hachage stocke le hachage SHA1 d'un tableau d'octets et la variable u.Pwhash contient la représentation hexadécimale de ce hachage.

Cependant, si nous essayons de combiner ces deux lignes en une seule, nous rencontrons une erreur :

<code class="go">u.Pwhash = hex.EncodeToString(sha1.Sum([]byte(uf.Pwd))[:])</code>
Copier après la connexion

Le message d'erreur indique qu'il n'est pas valide de découper la valeur de retour de sha1.Sum(). Cette différence se produit parce que :

  • Variables : Les variables comme le hachage sont adressables, ce qui signifie qu'elles représentent un emplacement en mémoire où les données peuvent être stockées et récupérées.
  • Valeurs de retour de fonction : Contrairement aux variables, les valeurs de retour des appels de fonction (comme sha1.Sum()) ne sont pas adressables. Ce sont des valeurs temporaires créées et détruites lors de l'exécution de la fonction.

Dans le deuxième extrait, nous tentons de découper sha1.Sum()[:], ce qui n'est pas autorisé car la valeur de retour de sha1.Sum () n'est pas adressable. Une opération slice nécessite que ses opérandes soient adressables.

Par conséquent, pour combiner correctement les lignes, nous devons d'abord stocker la valeur de retour de sha1.Sum() dans une variable adressable comme hash avant de la découper :

<code class="go">hash := sha1.Sum([]byte(uf.Pwd))
u.Pwhash = hex.EncodeToString(hash[:])</code>
Copier après la connexion
Copier après la connexion

Comprendre l'adressabilité et le comportement des variables et des valeurs de retour des fonctions est crucial pour écrire du code Go correct et efficace.

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal