در جست و جوی خود
20.آموزش GO با مثال(اینترفیس ها)

اینترفیس ها کالکشن هایی نام گذاری شده از اثر متد ها هستند .
package main
import "fmt"
import "math"اینجا یه اینترفیس اولیه برای شکل های هندسی داریم.
type geometry interface {
area() float64
perim() float64
}برای مثالمون ما این اینترفیس رو روی انواع rectو circle اجرا میکنیم.
type rect struct {
width, height float64
}
type circle struct {
radius float64
}برای اجرای یک اینترفیس در گو, ما فقط نیاز داریم که تمام متدهای داخل اینترفیس رو اجرا کنیم.اینجا ماgeometryرا روی rectها اجرا میکنیم.
func (r rect) area() float64 {
return r.width * r.height
}
func (r rect) perim() float64 {
return 2*r.width + 2*r.height
}
پیاده سازی برای circleها.
func (c circle) area() float64 {
return math.Pi * c.radius * c.radius
}
func (c circle) perim() float64 {
return 2 * math.Pi * c.radius
}اگر یک متغییر یک نوع اینترفیس داشته باشد, ما میتوانیم متد هایی که در اینترفیس نام گذاری شده اند را فراخوانی بنماییم. اینجا یک تابع جنریک measure از این موضوع برای بهره گیری روی هر geometryاستفاده میکند.
func measure(g geometry) {
fmt.Println(g)
fmt.Println(g.area())
fmt.Println(g.perim())
}
func main() {
r := rect{width: 3, height: 4}
c := circle{radius: 5}سازه های circle و rectهردو میتونن اینترفیس geometry را اجرا کنند بنا براین ما میتوانیم نمونه ای از این سازه ها را به عنوان آرگومان های measureاستفاده کنیم.
measure(r)
measure(c)
}$ go run interfaces.go
{3 4}
12
14
{5}
78.53981633974483
31.41592653589793برای یادگیری بیشتر در مورد اینترفیس ها این ، پست عالی بلاگ جردن را بررسی کنید.
<<متد ها------------------------------------------ خطاها>>
مطلبی دیگر از این انتشارات
7.آموزش GO با مثال (شرط switch)
مطلبی دیگر از این انتشارات
21.آموزش GO با مثال(خطاها)
مطلبی دیگر از این انتشارات
5.آموزش GO با مثال(حلقه for)