5 روز پیش
با مفهوم اینترفیس آشنا میشیم و یاد میگیریم چطور از اینترفیس در زبان GO استفاده کنیم.
اینترفیس در برنامهنویسی یک قرارداد یا الگوست که مشخص میکند چه متدهایی باید توسط یک نوع (type) پیادهسازی شوند، بدون اینکه جزئیات پیادهسازی را مشخص کند.
اینترفیس در اصل رفتار (behavior) یا قابلیتهایی که یک شی باید داشته باشد را توصیف میکند.
در زبان Go، اینترفیسها نوعی داده (type) هستند که فقط امضای متدها را تعریف میکنند و هیچ پیادهسازی ندارند.
در گولنگ پیاده سازی اینترفیس ها به صورت ضمنی انجام میشود بدین معنی که اگر یک type تمام متدهای تعریف شده در یک interface رو داشته باشه، اون interface رو پیادهسازی کرده است.
در مثال زیر File بهطور خودکار Writer را پیادهسازی کرده است زیرا تمامی متدهای آن را دارد:
با استفاده از Type Assertion و Type Switch میتونیم بررسی کنیم که یک متغیر یک اینترفیس خاص رو پیادهسازی میکنه یا نه.
روش اول با استفاده از type assertion یا Interface Assertion :
روش دوم با استفاده از type switch :
اینترفیس خالی (empty interface):
یعنی این اینترفیس هیچ متدی نیاز نداره، پس هر نوعی در Go میتونه مقدار interface{}
باشه.
ترکیب اینترفیس ها (interface composition):
در گولنگ میتوان چندین اینترفیس را با هم ترکیب کرد و یک اینترفیس بزرگتر ساخت.
با توجه به مثال بالا, هر تایپی (type) که هم Read و هم Write رو پیادهسازی کنه، ReadWriter رو هم پیادهسازی کرده است.