package main
import("fmt")type flag uint8const(
r flag =1<<iota
w
x
)type User struct{
permission flag
name string}// 添加权限func(u *User)Add(f flag){
u.permission = u.permission | f
}// 删除权限func(u *User)Del(f flag){
u.permission &^= f
}// 更改权限(取反)func(u *User)Chmod(f flag){
u.permission ^= f
}// 查看权限func(u User)Check(f flag)bool{return u.permission&f == f
}funcpt(user User){
str :=[]string{"r","w","x"}for i :=1; i <=3; i++{
fmt.Println(user.name, str[i-1],"-> ", user.Check(flag(i)))}
fmt.Println("----------------")}funcmain(){
user := User{name:"root", permission:0}//默认全false
user.Chmod(r | w | x)
user.Chmod(r | w | x)
user.Chmod(r | w)pt(user)
user.Del(r | w)
user.Del(r)pt(user)
user.Add(x)pt(user)
fmt.Println(user.Check(x))
fmt.Println(user.Check(r))}