*بله* میخواهد برای کاربرانش در کانالها محدودیت ایجاد کند. او پس از تحقیقات بسیار در مورد روشهای پیش رو، تصمیم گرفت که دسترسی هر کاربر را با یک عدد نشان دهد. هر بیت این عدد نشاندهندهی یکی از دسترسیها است. مقدار ۱ برای هر بیت نشاندهندهی دارا بودن دسترسی و صفر، نشاندهندهی عدم دسترسی است.
# جزئیات پروژه
پروژهی اولیه را از [این لینک](/problemset/assignments/4367/download_problem_initial_project/106386/) دانلود کنید.
*بله* دو تابع `GetUserPermissions` و `SetUserPermissions` را برای مدیریت دسترسیها در فایل `main.go` در نظر گرفته است:
+ تابع `GetUserPermissions` یک ورودی از نوع `int8` میپذیرد که هر بیت آن عدد نشاندهندهی هر یک از دسترسیها است و بهعنوان خروجی، یک ساختار به نام `Permissons` را بر میگرداند که شامل دسترسیهای مختلف از نوع `bool` است.
+ تابع `SetUserPermissions` یک ساختار `Permissions` را بهعنوان ورودی دریافت کرده و یک عدد از نوع `int8` را برمیگرداند.
*بله* برای این کار ۶ دسترسی در نظر گرفته که بهترتیب از کمارزشترین بیت به پرارزشترین بیت در زیر آمدهاند:
```
canSeeMessages (کمارزشترین بیت)
canDeleteMessages
canEditMessages
canKickMembers
canMakeMembersAdmin
canAddMembers
```
حال، او از شما خواسته تا این دو تابع را پیادهسازی کنید تا او بتواند بهتر از گذشته کانالهایش را مدیریت کند.
# آنچه باید آپلود کنید
پس از پیادهسازی توابع، فایل `main.go` را آپلود کنید. در صورتی که از *dependency* خاصی استفاده کردهاید، فایلهای `go.mod` و `go.sum` را بههمراه فایل `main.go` زیپ کرده و آن را آپلود کنید.