Bagaimanakah anda menyemak sama ada peranan tertentu disertakan dalam bitmask menggunakan operasi bitwise dalam Go?

Susan Sarandon
Lepaskan: 2024-10-26 20:16:03
asal
533 orang telah melayarinya

How do you check if a specific role is included in a bitmask using bitwise operations in Go?

Memahami Operasi Bitmasking dan Bitwise dalam Go

Bitmasking dan operasi bitwise ialah konsep asas dalam pengaturcaraan komputer yang membenarkan manipulasi data pada peringkat binari . Dalam contoh ini, kami meneroka konsep ini dalam Go:

<code class="go">package main

import (
    "fmt"
)

const (
    isAdmin = 1 << iota
    isHeadquarters
    canSeeFinancials

    canSeeAfrica
    canSeeAsia
    canSeeEurope
    canSeeNorthAmerica
    canSeeSouthAmerica
)

func main() {
    var roles byte = isAdmin | canSeeFinancials | canSeeEurope
    fmt.Printf("%b\n", roles)
    fmt.Printf("Is Admin? %v\n", isAdmin&roles == isAdmin)
}</code>
Salin selepas log masuk

Bitmasking dan Bitwise ATAU

Pemalar ialahAdmin, isHeadquarters, dsb., mewakili bitmasks peranan, di mana setiap bit mewakili peranan tertentu. Bitmasking melibatkan peralihan 1 bit tunggal ke kedudukan yang berbeza, menghasilkan corak bit dengan hanya satu 1 bit. Operasi OR bitwise (|) menggabungkan corak bit ini, mencipta topeng yang mengaktifkan sebarang peranan yang disertakan dalam operasi OR.

Dalam contoh di atas, peranan dimulakan menggunakan operator bitwise OR:

<code class="go">var roles byte = isAdmin | canSeeFinancials | canSeeEurope</code>
Salin selepas log masuk

Ini menetapkan setiap bit yang sepadan dengan isAdmin, canSeeFinancials dan canSeeEurope kepada 1, manakala bit lain kekal 0.

Bitwise AND dan Menyemak Peranan

Ungkapan isAdmin&roles == isAdmin menyemak sama ada peranan termasuk peranan isAdmin. Bitwise AND (&) melakukan operasi AND logik pada setiap bit corak bit input. Corak bit yang terhasil mempunyai 1 bit sahaja dengan kedua-dua bit input ialah 1.

Dalam kes ini, isAdmin&roles menghasilkan corak bit dengan hanya satu 1 bit, menunjukkan kehadiran peranan isAdmin dalam peranan. Membandingkan hasil ini dengan isAdmin memastikan bahawa peranan termasuk isAdmin.

Bitwise Equality and Single Role

Sebaliknya, ungkapan roles == isAdmin menyemak sama ada peranan adalah sama dengan isAdmin . Ini benar hanya apabila peranan secara eksklusif mengandungi peranan isAdmin dan tiada peranan lain.

Oleh itu, isAdmin&roles == isAdmin menyemak sama ada peranan mengandungi peranan isAdmin, manakala roles == isAdmin menyemak dengan ketat sama ada peranan adalah semata-mata peranan isAdmin .

Atas ialah kandungan terperinci Bagaimanakah anda menyemak sama ada peranan tertentu disertakan dalam bitmask menggunakan operasi bitwise dalam Go?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!