Dans l'extrait de code fourni, le masquage de bits est utilisé pour représentent les rôles des utilisateurs. Chaque rôle se voit attribuer un bit unique, garantissant que chaque bit ne peut avoir que deux états : 0 (non attribué) ou 1 (attribué). Cela permet une représentation efficace et une gestion facile des rôles.
L'opération ET au niveau du bit (isAdmin & rôles) est utilisée pour vérifier si le rôle actuel appartient à isAdmin rôle. Cette opération vérifie chaque bit dans les deux opérandes. Lorsque les deux bits sont à 1, le résultat est 1. Sinon, le résultat est 0. Ainsi, si le résultat de isAdmin & rôles est égal à isAdmin, cela implique que le rôle actuel a le bit isAdmin défini, indiquant son appartenance à isAdmin. rôle.
L'opération OU au niveau du bit (isAdmin | canSeeFinancials | canSeeEurope) attribue plusieurs rôles à une seule variable. Dans ce cas, les valeurs isAdmin, canSeeFinancials et canSeeEurope sont attribuées aux rôles. Le résultat est un masque de bits qui représente la combinaison de tous les rôles attribués.
<br>isAdmin 00000001<br>canSeeFinancials 00000100</p> <h2>canSeeEurope 00100000</h2> <p>rôles 00100101<br>
Cette représentation visuelle met en évidence comment les rôles contiennent les modèles de bits pour chaque rôle attribué.
<br>rôles 00100101</p> <h2>isAdmin 00000001</h2> <p>isAdmin & rôles 00000001<br>
Dans cet exemple, l'opération ET au niveau du bit renvoie 00000001, ce qui est égal à isAdmin, confirmant que les rôles incluent le rôle isAdmin.
La vérification de l'égalité au niveau des bits (roles == isAdmin) n'est évaluée que si les rôles contiennent exclusivement le rôle isAdmin. rôle. Toute attribution de rôle supplémentaire entraînerait un faux résultat.
En résumé, le masquage de bits et les opérations au niveau du bit fournissent un moyen efficace et concis de représenter et de manipuler les rôles dans Golang. En tirant parti de la logique au niveau des bits, vous pouvez facilement déterminer l'appartenance à un rôle et combiner différents rôles avec précision.
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!