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

Comment fonctionnent les opérations au niveau du bit et le masquage dans Go, et pourquoi \'isAdmin & rôles == isAdmin\' est-il évalué à True ?

Patricia Arquette
Libérer: 2024-10-27 03:07:02
original
645 Les gens l'ont consulté

How Do Bitwise Operations and Masking Work in Go, and Why Does

Masquage de bits et opérations au niveau du bit dans Golang : comprendre la logique au niveau du bit

Dans Go, le masquage de bits et les opérations au niveau du bit fournissent des moyens efficaces de manipuler des données binaires. Explorons le fonctionnement de ces opérations et clarifions votre confusion concernant le masquage de bits.

Masquage de bits : une introduction

Le masquage de bits est une technique qui utilise des constantes spécialement conçues pour représenter différents rôles ou autorisations. Dans votre extrait de code, vous avez utilisé la constante iota pour créer une série de constantes contenant chacune un seul bit « 1 » à une position spécifique. Ces constantes sont ensuite utilisées pour construire une variable de rôles à l'aide d'un OU au niveau du bit ('|') :

<code class="go">var roles byte = isAdmin | canSeeFinancials | canSeeEurope</code>
Copier après la connexion

Cette opération définit les bits « 1 » dans les rôles pour qu'ils correspondent aux positions des bits « 1 » dans les trois constantes. Visualiser les représentations binaires aide :

isAdmin          00000001
canSeeFinancials 00000100
canSeeEurope     00100000
-------------------------
roles            00100101
Copier après la connexion

ET au niveau du bit et masquage

Votre confusion vient de l'opération ET au niveau du bit ('&') utilisée dans cette ligne :

<code class="go">fmt.Printf("Is Admin? %v\n", isAdmin &amp; roles == isAdmin)</code>
Copier après la connexion

Cette opération vérifie si isAdmin est défini dans la variable de rôles. Cependant, l'expression estAdmin & rôles renvoie un nombre qui contient des bits « 1 » uniquement là où isAdmin et les rôles ont des bits « 1 ».

Dans votre cas, puisque les rôles incluent le bit isAdmin, le résultat de isAdmin & les rôles seront égaux à isAdmin. C'est pourquoi l'expression est évaluée comme vraie.

Cependant, si vous utilisez l'égalité au niveau des bits la moins stricte (==), vous comparez l'intégralité de la représentation binaire des rôles à isAdmin. Étant donné que les rôles contiennent des bits supplémentaires, ils ne sont pas égaux à isAdmin, ce qui entraîne false.

Conclusion

Le masquage de bits et les opérations au niveau du bit sont des outils puissants qui vous permettent d'effectuer efficacement des opérations logiques sur des données binaires. En comprenant les concepts derrière la manipulation de bits, vous pouvez écrire du code plus robuste et plus efficace dans Go.

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
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!