Maison >développement back-end >Golang >Pourquoi ne puis-je pas découper la valeur de retour d'une fonction dans Go ?
Un problème courant survient lors de la tentative de jointure de lignes de code impliquant des tableaux et des appels de fonction . Par exemple, considérons le code original suivant qui réussit à joindre deux lignes :
<code class="go">hash := sha1.Sum([]byte(uf.Pwd)) u.Pwhash = hex.EncodeToString(hash[:])</code>
Cependant, si vous essayez de combiner le code en une seule ligne, vous pouvez rencontrer un message d'erreur :
<code class="go">u.Pwhash = hex.EncodeToString(sha1.Sum([]byte(uf.Pwd))[:])</code>
Le message d'erreur indique un problème de découpage de la valeur de retour d'un appel de fonction. Dans Go, les valeurs de retour des appels de fonction, comme celle de sha1.Sum(), ne sont pas adressables.
Pour comprendre ce comportement, il est important de savoir quels sont les types adressables dans Go. Selon la spécification Go, seuls les éléments suivants sont adressables :
Étant donné que la valeur de retour de sha1.Sum() n'est pas l'un de ces types, elle ne peut pas être découpée. Découper un tableau, comme requis ici, nécessite que le tableau soit adressable.
Dans la première ligne du code d'origine, le tableau renvoyé est stocké dans une variable locale (hachage), qui est adressable. Dans la deuxième ligne, hex.EncodeToString(hash[:]) est calculé, ce qui fonctionne comme prévu.
Cette distinction entre les variables et les valeurs de retour souligne l'importance de comprendre les règles d'adressage de Go. En suivant ces règles, vous pouvez éviter les erreurs courantes et écrire un code plus robuste.
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!