68 lines
1.5 KiB
Markdown
68 lines
1.5 KiB
Markdown
|
---
|
|||
|
title: Go Methods
|
|||
|
localeTitle: الذهاب أساليب
|
|||
|
---
## الذهاب أساليب
|
|||
|
|
|||
|
أنواع Golang يمكن أن يكون لها طرق. الطريقة هي دالة ذات وسيطة خاصة ، _المتلقي_ .
|
|||
|
|
|||
|
`type Rectangle struct {
|
|||
|
height, width int64
|
|||
|
}
|
|||
|
|
|||
|
func (r Receiver) getArea() int64 {
|
|||
|
return r.height * r.height
|
|||
|
}
|
|||
|
|
|||
|
r := Rectangle{10, 20}
|
|||
|
r.getArea() // 200
|
|||
|
`
|
|||
|
|
|||
|
هنا ، اكتب `Rectangle` قد حصلت على طريقة تسمى `getArea` تقوم بإرجاع مساحة المستطيل. المتلقي هنا هو `r` .
|
|||
|
|
|||
|
هذا الرمز مكافئ لما يلي:
|
|||
|
|
|||
|
`type Rectangle struct {
|
|||
|
height, width int64
|
|||
|
}
|
|||
|
|
|||
|
func getArea(r Receiver) int 64{
|
|||
|
return r.height * r.height
|
|||
|
}
|
|||
|
|
|||
|
r := Rectangle{10, 20}
|
|||
|
getArea(r) // 200
|
|||
|
`
|
|||
|
|
|||
|
الآن يتلقى أسلوب getArea `r` كوسيطة ، بدلاً من جهاز استقبال. الوظيفة مكافئ.
|
|||
|
|
|||
|
### مؤشر المتلقي
|
|||
|
|
|||
|
يمكنك تمرير مؤشر كمستقبل:
|
|||
|
|
|||
|
`type MyInt int64
|
|||
|
|
|||
|
func (m *MyInt) setToZero() {
|
|||
|
*m = MyInt(0)
|
|||
|
}
|
|||
|
|
|||
|
m := MyInt(10)
|
|||
|
m.setToZero() // m == 0
|
|||
|
`
|
|||
|
|
|||
|
### طرق التمديد
|
|||
|
|
|||
|
إذا كنت ترغب في إنشاء طريقة على نوع محدد في حزمة أخرى ، مثل `int` يمكنك استخدام غلاف بسيط مثل:
|
|||
|
|
|||
|
`type MyInt int64
|
|||
|
|
|||
|
func (m MyInt) add10() int64 {
|
|||
|
return m + 10
|
|||
|
}
|
|||
|
|
|||
|
m := MyInt(10)
|
|||
|
m.add10() // 20
|
|||
|
`
|
|||
|
|
|||
|
#### معلومات اكثر:
|
|||
|
|
|||
|
https://tour.golang.org/methods/1
|