Gopher Academy
3.84K subscribers
933 photos
42 videos
280 files
2.22K links
🕸 Gopher Academy

🔷interview golang
https://github.com/mrbardia72/Go-Interview-Questions-And-Answers

حمایت مالی:
https://www.coffeete.ir/mrbardia72

ادمین:
@mrbardia72
Download Telegram
🔵 عنوان مقاله
switch Statements in Go

🟢 خلاصه مقاله:
این مطلب از Golang Weekly به‌صورت عملی سراغ عبارت‌های switch در Go می‌رود و نشان می‌دهد چگونه می‌توان به‌جای زنجیره‌های if/else طولانی، کدی خواناتر نوشت. ابتدا نحو و قواعد ارزیابی switch، استفاده از چند مقدار در یک case، نقش default، و این نکته که در Go سقوط خودکار بین caseها وجود ندارد و فقط با fallthrough فعال می‌شود، توضیح داده می‌شود. سپس فرم بدون تگِ switch { ... } برای نگارش نگهبان‌های منطقیِ مرتب معرفی می‌شود.

بخش بعدی به type switch اختصاص دارد: وقتی با interface سروکار دارید، switch روی v.(type) اجازه می‌دهد بر اساس نوع واقعی تصمیم بگیرید، از nil به‌درستی عبور کنید و محدوده متغیرها در سربرگ switch و داخل caseها را مدیریت کنید. مقاله الگوهای کاربردی مثل مسیردهی بر اساس روش HTTP، دسته‌بندی خطاها برحسب نوع، شاخه‌بندی زمان‌محور و استفاده از ثابت‌ها را مرور می‌کند و در کنار آن به نکات سبک و کارایی اشاره دارد. جمع‌بندی این است که با رعایت چند قاعده ساده و پرهیز از دام‌های متداول، switch در Go ابزاری شفاف، قابل نگهداری و گاه سریع‌تر از شرط‌های زنجیره‌ای خواهد بود.

#Go #Golang #GolangWeekly #switch #TypeSwitch #GoTips #Programming #Backend

🟣لینک مقاله:
https://golangweekly.com/link/176626/web


👑 @gopher_academy
1
🔵 عنوان مقاله
Revisiting Interface Segregation in Go

🟢 خلاصه مقاله:
این مطلب «Interface Segregation Principle (ISP)» را از منظر Go مرور می‌کند: مشتری نباید به متدهایی وابسته شود که از آن‌ها استفاده نمی‌کند. در Go، راهکارهای رایج شامل ساختن رابط‌های کوچک و رفتاری، تعریف رابط‌ها در محل استفاده، «پذیرفتن interface و برگرداندن نوع‌های concrete»، و الهام گرفتن از نمونه‌های استاندارد مثل io.Reader و io.Writer است.

مشکل وقتی پیش می‌آید که یک پکیج، رابط‌های چاق و همه‌چیزدار صادر می‌کند؛ این کار تغییرات را سخت و پیاده‌سازی‌ها را پر از متدهای بی‌مصرف می‌کند. بهتر است رابط‌های کوچک را ترکیب یا embed کنیم، فقط وقتی واقعاً لازم است سراغ رابط‌های بزرگ برویم، و از میان‌افزارها/adapterها برای سازگاری در مسیر ریفکتور کمک بگیریم.

راهبرد عملی: ابتدا پیاده‌سازی‌های concrete بسازید، بعد بر اساس نیاز واقعی رابط استخراج کنید؛ مجموعه‌متدها را کوچک نگه دارید، برای تست از فیک/ماک بهره ببرید، و APIها را تدریجی تکامل دهید. با وجود generics هم باید از تعمیم بی‌جا پرهیز کرد و رابط‌های runtime را بر رفتار متمرکز نگه داشت. نتیجه پایبندی به ISP در Go، کدی ساده‌تر برای تست، نگهداشت و توسعه است؛ نکاتی که در تازه‌ترین مطلب معرفی‌شده توسط Golang Weekly نیز برجسته شده‌اند.

#Go #Golang #InterfaceSegregation #ISP #GoInterfaces #SoftwareDesign #Refactoring #GolangWeekly

🟣لینک مقاله:
https://golangweekly.com/link/176622/web


👑 @gopher_academy
👍2