در این بخش قصد داریم به بحث ژنریک ها بپردازیم که از نسخه go1.18 اضافه شد که تقریبا یکی از اساسی ترین تغییرات در سینتکس زبان گو بود و در قالب یک پروپوزال ارائه شد و سپس از نسخه ۱.۱۸ منتشر شد و تا الان تغییرات و بهبودهای زیادی داشته است.
ژنریک به زبان برنامهنویسی امکانات مهمی اضافه میکند:
پارامترهای نوع برای توابع و انواع داده: با ژنریک، میتوانید توابع و انواع دادهای را با پارامترهای نوع مخصوص بسازید. به این ترتیب میتوانید یک تابع یا یک نوع داده را برای کار با انواع مختلف داده تعریف کنید.
تعریف انواع رابط به عنوان مجموعهای از انواع: با ژنریک، میتوانید انواع اینترفیس را به عنوان مجموعههایی از انواع تعریف کنید، حتی انواعی که متدهای خاصی ندارند. این به شما امکان میدهد تا انواع دادهای را به عنوان پارامترها در تعریف اینترفیسها استفاده کنید.
استفاده از استنباط نوع (Type Inference): ژنریک اجازه میدهد که در بسیاری از موارد، پارامترهای نوع را در فراخوانی توابع حذف کنید. به این ترتیب کد شما سادهتر و خواناتر میشود و نیازی به تعیین دقیق نوع در همه جا ندارید.
نکات کاربردی
- زمانی از ژنریک ها استفاده کنید که کدهای شما فقط با تغییر تایپ در حال تکرار است آنجا شما می توانید از ژنریک ها برای کاهش کد خود کمک بگیرید.
- از ژنریک ها می توانید برای کاهش Assertion اینترفیس ها استفاده کنید.
- با اینکه ژنریک یک ویژگی خوب است اما استفاده زیاد باعث پیچیدگی و سربار حافظه خواهد شد.
ژنریک چیست؟ #
ژنریک یک ویژگی مهم در Go است که به شما این امکان را میدهد تا کدهای کلی و قابل استفاده مجدد بنویسید بدون اینکه به تایپهای خاصی محدود شوید. به عبارت سادهتر، با ژنریک میتوانید توابع و ساختارهای داده را بنویسید که با انواع مختلف دادهها کار کنند.
به عنوان مثال، فرض کنید یک تابع بخواهید بنویسید که دو عدد را با هم جمع کند. بدون استفاده از ژنریک، شما باید تابعهای مجزایی برای جمع دو عدد از نوع مختلف (مثلاً عدد صحیح و عدد اعشاری) بنویسید. اما با ژنریک، میتوانید یک تابع جمع کننده عمومی بنویسید که با هر نوع دادهای کار کند.
در اصطلاحات Go، از انواع نمادگذاری ژنریک میکنیم. این انواع میتوانند به صورت متغیر باشند و از آنها در تابعها و ساختارهای داده استفاده کنید تا کدی ایجاد کنید که قابل استفاده با انواع مختلف دادهها باشد.
از مزیتهای ژنریک در Go میتوان به کاهش تکرار کد، افزایش قابلیت خوانایی کد و افزایش انعطافپذیری برنامه اشاره کرد. با استفاده از این قابلیت، میتوانید کدهای بهینهتری بنویسید و طراحی بهتری داشته باشید.
بنابراین، ژنریک در Go به شما این امکان را میدهد که کدهای کلیتر و کاربردیتری بنویسید که با انواع مختلف دادهها سازگار باشند و به عنوان یک توسعهدهنده جوان، این ابزار قدرتمند را در توسعه نرمافزارهای خود بهرهبری کنید.