Category

Go Programming

Go language tutorials, patterns, and best practices

68 posts

ساخت یک سرور JSON-RPC با عملکرد بالا با اعتبارسنجی طرحواره JSON در Go

سیستم‌های توزیع‌شده مدرن به اجرای دقیق قرارداد نیاز دارند. در حالی که REST جایگاه خود را دارد، JSON-RPC جایگزینی سبک و کارآمد برای ارتباط بین سرویس‌ها، به‌ویژه در معماری‌های میکروسرویس ارائه می‌دهد. با این حال، تماس‌های خام RPC بدون اعتبارسنجی می‌توانند خطرناک باشند. این پست بررسی می‌کند که چگونه...

باز کردن عملکرد فوق‌العاده: ترکیب sync.Pool با RWMutex برای کش‌های همزمان با تأخیر کم

در دنیای برنامه‌نویسی Go، تخصیص حافظه به طور کلی سریع است، اما تحت بارهای همزمانی بالا، فشار وارد بر جمع‌آورنده زباله (GC) می‌تواند به یک گلوگاه قابل توجه تبدیل شود. برای توسعه‌دهندگانی که سیستم‌های با عبور داده بالا (High-throughput) می‌سازند...

تسلط بر ماژول‌ها و مدیریت فضای کاری در Go برای توسعه مدرن

از نسخه ۱.۱۱، زبان Go از مدیریت وابستگی‌های محدود مبتنی بر GOPATH به سمت سیستمی قوی‌تر و استانداردتر با استفاده از ماژول‌های Go حرکت کرده است. برای پروژه‌های فردی، فایل‌های go.mod ساده هستند. اما با افزایش پیچیدگی برنامه‌ها، به ویژه در معماری‌های میکروسرویس...

تسلط بر تست‌نویسی در Go: قدرت تست‌های جدول‌محور

تست‌نویسی تنها یک تیک در چک‌لیست چرخه توسعه نیست؛ بلکه ستون فقرات نرم‌افزار قابل اعتماد است. در اکوسیستم Go، تست‌نویسی جایگاه اول را دارد. پکیج تست در کتابخانه استاندارد تعبیه شده و توسعه‌دهندگان را به نوشتن تست در کنار کد تشویق می‌کند. با این حال، وقتی کد شما بزرگ می‌شود...

تسلط بر الگوهای مدیریت خطا در Go: فراتر از دستور شرطی ساده

در بسیاری از زبان‌های برنامه‌نویسی سنتی، استثناها مکانیسم قدرتمندی برای مدیریت خطاها با بازگرداندن پشته و انتقال کنترل به یک بلوک catch خاص فراهم می‌کنند. با این حال، Go رویکرد فلسفی متفاوتی دارد. این زبان مدیریت خطای صریح را از طریق بازگرداندن مقادیر خطا می‌پذیرد...

تسلط بر ژنریک‌های Go: مثال‌های کاربردی برای کد تمیزتر

معرفی ژنریک‌ها در Go 1.18 نقطه عطفی در تکامل این زبان بود. برای سال‌ها، توسعه‌دهندگان Go برای انعطاف‌پذیری نوع به رابط‌ها، بازتاب و تولید کد متکی بودند که اغلب به قیمت کدهای تکراری و عملکرد زمان اجرا تمام می‌شد. ژنریک‌ها یک مکانیسم درجه اول برای نوشتن کد ایمن از نظر نوع و قابل استفاده مجدد فراهم می‌کنند...

ساخت میکروسرویس‌های با عملکرد بالا در Go با استفاده از gRPC

در معماری سیستم‌های توزیع‌شده مدرن، عملکرد و کارایی غیرقابل مذاکره هستند. با رشد برنامه‌ها، سربار ارتباط بین سرویس‌ها می‌تواند به یک گلوگاه بزرگ تبدیل شود. اینجاست که gRPC می‌درخشد. با بهره‌گیری از پروتوباف (Protobuf) به عنوان زبان تعریف رابط (IDL) و HTTP/2 برای انتقال، gRPC یک جایگزین قوی، کارآمد و دارای نوع‌بندی دقیق در برابر REST ارائه می‌دهد.