Maison > Article > développement back-end > Pourquoi ne puis-je pas découper la valeur de retour d'une fonction dans 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>
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>
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 :
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>
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!