package main

import "fmt"

const (
	baca     = 1 << 0 // 001 = 1
	jalankan = 1 << 1 // 010 = 2
	tulis    = 1 << 2 // 100 = 4
)

func main() {
	// OR menggabungkan beberapa permission menjadi satu mask
	admin := baca | jalankan | tulis
	tamu := baca

	fmt.Printf("admin = %03b (%d)\n", admin, admin)
	fmt.Printf("tamu  = %03b (%d)\n", tamu, tamu)

	// AND menguji apakah satu permission aktif
	fmt.Println("admin bisa tulis   :", admin&tulis != 0)
	fmt.Println("tamu bisa tulis    :", tamu&tulis != 0)

	// AND NOT mencabut permission dari mask
	editor := admin &^ jalankan
	fmt.Printf("editor = %03b (%d)\n", editor, editor)
	fmt.Println("editor bisa jalankan:", editor&jalankan != 0)
}
