Menu
Coddy logo textTech
flag Ar iconالعربيةdown icon

تعريف الـ Methods في الـ Structs

جزء من قسم البرمجة كائنية التوجه في رحلة GO على Coddy. الدرس 7 من 107.

الأساليب في Go هي دوال ذات وسيطة receiver خاصة تربط الدالة بنوع struct.

صيغة method

func (receiverName StructType) MethodName() ReturnType {
    // جسم الطريقة
}

عرّف struct مع method

type Rectangle struct {
    Width  float64
    Height float64
}

func (r Rectangle) Area() float64 {
    return r.Width * r.Height
}

func (r Rectangle) Perimeter() float64 {
    return 2 * (r.Width + r.Height)
}

الأساليب ذات المعاملات

func (r Rectangle) Scale(factor float64) float64 {
    return r.Area() * factor
}

استدعاء methods

rect := Rectangle{Width: 5, Height: 3}
fmt.Println(rect.Area())      // الناتج: 15
fmt.Println(rect.Perimeter()) // الناتج: 16
fmt.Println(rect.Scale(2))    // الناتج: 30

يتيح لك المُستقبِل (r Rectangle) الوصول إلى حقول struct داخل method باستخدام متغيّر المُستقبِل r. يمكن للـ methods استدعاء methods أخرى على struct نفسه.

challenge icon

التحدي

متوسط

أضف ثلاث method إلى Circle struct:

  • Area: returns math.Pi * radius * radius
  • Circumference: returns 2 * math.Pi * radius
  • Describe: returns string: "Circle with radius X.XX"

جرّب بنفسك

package main

import "fmt"

func main() {
    var radius float64
    fmt.Scan(&radius)

    c := Circle{Radius: radius}

    fmt.Printf("Area: %.2f\n", c.Area())
    fmt.Printf("Circumference: %.2f\n", c.Circumference())
    fmt.Printf("Description: %s\n", c.Describe())
}
quiz iconاختبر نفسك

يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.

جميع دروس البرمجة كائنية التوجه

تدرّب بنفسك: مترجم Go عبر الإنترنت