Menu
Coddy logo textTech

הגדרת מתודות עבור Structs

חלק מהיחידה תכנות מונחה עצמים במסלול ה-GO של Coddy. שיעור 7 מתוך 107.

מתודות ב-Go הן פונקציות עם ארגומנט מקבל מיוחד, שמשייך את הפונקציה לסוג מבנה.

תחביר של מתודה

func (receiverName StructType) MethodName() ReturnType {
    // גוף המתודה
}

הגדרת struct עם מתודות

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
}

קריאה למתודות

rect := Rectangle{Width: 5, Height: 3}
fmt.Println(rect.Area())      // פלט: 15
fmt.Println(rect.Perimeter()) // פלט: 16
fmt.Println(rect.Scale(2))    // פלט: 30

המקבל (r Rectangle) מאפשר לך לגשת לשדות של המבנה בתוך המתודה באמצעות משתנה המקבל r. מתודות יכולות לקרוא למתודות אחרות באותו מבנה.

challenge icon

אתגר

בינוני

הוסף שלוש מתודות למבנה Circle:

  • Area: מחזירה math.Pi * radius * radius
  • Circumference: מחזירה 2 * math.Pi * radius
  • Describe: מחזירה מחרוזת: "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 אונליין