در جست و جوی خود
19.آموزش GO با مثال(متدها)
گو از متدهای تعریف شده روی انواع سازه ها پشتیبانی میکند.
package main
import "fmt"
type rect struct {
width, height int
}
متد area
یک دریافت کننده از نوع *rect
دارد.
func (r *rect) area() int {
return r.width * r.height
}
روش ها برای هر نوع اشاره گر یا مقدار گیرنده می توانند تعریف شوند. اینجا یه مثال از مقدار گیرنده داریم.
func (r rect) perim() int {
return 2*r.width + 2*r.height
}
func main() {
r := rect{width: 10, height: 5}
اینجا ما 2 متد تعریف شده روی سازه خودمون رو فراخوانی میکنیم.
fmt.Println("area: ", r.area())
fmt.Println("perim:", r.perim())
گو به صورت خودکار تبدیل بین مقادیر و اشاره گرها را برای فراخوانی متدها انجام می دهد. شما ممکنه از یک نوع اشاره گر گیرنده برای جلوگیری از کپی کردن روی فراخوانی متدها استفاده کنید یا به متدها برای تغییر دادن سازه های دریافتی اجازه دهید.
rp := &r
fmt.Println("area: ", rp.area())
fmt.Println("perim:", rp.perim())
}
$ go run methods.go
area: 50
perim: 30
area: 50
perim: 30
در قسمت بعدی ما به مکانیزم گو برای گروه بندی و نامگذاری مجموعه های متفاوتی از متدها نگاهی میندازیم: اینترفیس ها.
<<سازه ها----------------------------------اینترفیس ها>>
مطلبی دیگر از این انتشارات
4.آموزش GO با مثال(ثابت ها)
مطلبی دیگر از این انتشارات
13.آموزش GO با مثال(چند بازگشتی مقادیر)
مطلبی دیگر از این انتشارات
17.آموزش GO با مثال(اشاره گرها)