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 :
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!