اینترفیسهای مهم
اینترفیسهای پرکاربرد کتابخانه استاندارد: Stringer، error و sort.Interface.
اینترفیسهای معروف کتابخانه استاندارد
۱. fmt.Stringer — نمایش رشتهای
اگر متد String() string داشته باشید، fmt.Println خودکار از آن استفاده میکند:
type Person struct {
Name string
Age int
}
func (p Person) String() string {
return fmt.Sprintf("%s (%d ساله)", p.Name, p.Age)
}
p := Person{"علی", 25}
fmt.Println(p) ← علی (۲۵ ساله)
۲. error — مدیریت خطا
error خودش یک اینترفیس است:
type error interface {
Error() string
}
هر نوعی با متد Error() string میتواند error باشد:
type ValidationError struct {
Field string
}
func (e *ValidationError) Error() string {
return "فیلد نامعتبر: " + e.Field
}
۳. sort.Interface — مرتبسازی سفارشی
type Interface interface {
Len() int
Less(i, j int) bool
Swap(i, j int)
}
یا سادهتر با sort.Slice:
people := []Person{
{"علی", 25},
{"سارا", 30},
{"رضا", 20},
}
sort.Slice(people, func(i, j int) bool {
return people[i].Age < people[j].Age
})
۴. io.Reader و io.Writer
ستون فقرات I/O در Go:
type Reader interface { Read(p []byte) (n int, err error) }
type Writer interface { Write(p []byte) (n int, err error) }
فایل، شبکه، بافر، HTTP response — همه Reader/Writer هستند!
۵. comparable — قابل مقایسه
انواعی که با == قابل مقایسهاند:
func Contains[T comparable](list []T, target T) bool {
for _, v := range list {
if v == target {
return true
}
}
return false
}
جدول جمعبندی
| اینترفیس | متد | کاربرد |
|---|---|---|
fmt.Stringer | String() string | نمایش سفارشی در Print |
error | Error() string | مدیریت خطا |
sort.Interface | Len, Less, Swap | مرتبسازی سفارشی |
io.Reader | Read() | خواندن داده |
io.Writer | Write() | نوشتن داده |
any | — | هر نوعی |
این مبحث بخشی از دوره آموزش کامل گو است.