Category

Go Programming

Go language tutorials, patterns, and best practices

68 posts

تسلط بر محدودیت نرخ با تراکم بالا در Go: پیاده‌سازی سطل توکن

در فضای سیستم‌های توزیع‌شده مدرن، محافظت از API شما در برابر نوسانات ترافیک و سوءاستفاده‌های مخرب غیرقابل مذاکره است. اگرچه شمارنده‌های پنجره ثابت ساده پیاده‌سازی آسانی دارند، اما اغلب با مشکلات مرزی مواجه می‌شوند که در آن‌ها درخواست‌ها دقیقاً در زمان بازنشانی پنجره دو برابر می‌شوند. الگوریتم سطل توکن...

ساخت سرویس‌های مقاوم در گو: تسلط بر مکانیسم‌های تلاش مجدد و مدارشکن

در دنیای سیستم‌های توزیع‌شده و میکروسرویس‌ها، شکست‌ها نه یک سوال «آیا»، بلکه یک سوال «کی» هستند. قطعی شبکه، زمان‌برهای پایگاه داده و اختلالات API شخص ثالث اجتناب‌ناپذیرند. برای توسعه‌دهندگان گو، ساخت سرویس‌هایی که بتوانند این شکست‌های گذرا را به‌خوبی مدیریت کنند، برای حفظ ...

غلبه بر قدرت و ایمنی: مثال‌های عملی از جنریک‌های Go برای توسعه مدرن

از زمان معرفی Go 1.18، جنریک‌ها به یکی از موردانتظارترین ویژگی‌ها در تاریخ این زبان تبدیل شده‌اند. برای سال‌ها، توسعه‌دهندگان Go برای دستیابی به ایمنی نوع بدون کدهای تکراری به ابزارهای تولید کد مانند stringer یا اطمینان‌های دستی اینترفیس متکی بودند. اگرچه این روش‌ها مؤثر بودند، اما اغلب قصد برنامه را مخفی می‌کردند و پیچیدگی را به فرآیند ساخت اضافه می‌کردند.

جنریک‌های Go در عمل: مثال‌های کاربردی برای مارشالینگ JSON و ابزارهای سفارشی اسلایس

از زمان انتشار Go 1.18، زبان برنامه‌نویسی Go با معرفی پارامترهای نوع، که به طور رایج «جنریک» نامیده می‌شوند، تحول چشمگیری را تجربه کرده است. برای سال‌ها، توسعه‌دهندگان Go برای دستیابی به انعطاف‌پذیری نوع به interface{} (اینترفیس‌های خالی) و ریفکشن تکیه می‌کردند که اغلب به قیمت ایمنی در زمان کامپایل و عملکرد تمام می‌شد. جنریک‌ها بالاخره راهی را فراهم کردند تا کد قابل استفاده مجدد و ایمن از نظر نوع نوشته شود...

تسلط بر الگوهای تابعی عمومی در Go: Map، Filter و Reduce

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

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

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

تسلط بر کانال‌های Go: الگوهای پیشرفته Select، مدیریت زمان‌بندی و پیشگیری از نشت

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