Menu
CoddyTech

Struct מוטמעים

חלק מהיחידה יסודות במסלול ה-GO של Coddy. שיעור 99 מתוך 109.

Go מאפשרת להטמיע מבנה אחד בתוך מבנה אחר, וכך ליצור יחסי הרכבה. זו הגישה של Go לירושה.

הגדירו שתי מבנים, כאשר אחד מוטמע בתוך השני:

type Address struct {
    city  string
    state string
}

type Person struct {
    name string
    age  int
    Address  // מבנה מוטמע (ללא שם שדה)
}

func main() {
    person := Person{
        name: "Alice",
        age: 30,
        Address: Address{city: "Portland", state: "Oregon"},
    }
    
    // גישה ישירה לשדות
    fmt.Println(person.city)  // גישה לשדה מוטמע
}

הפלט מראה שאפשר לגשת ישירות לשדות של המבנה המוטמע:

Portland
challenge icon

אתגר

מתחילים

באתגר הזה תתרגלו שימוש במבנים מוטמעים (הרכבה) ב-Go.

יש לנו שני מבנים: Address ו-Person. המבנה Person צריך להטמיע את המבנה Address, כך שאפשר יהיה לגשת ישירות לשדות הכתובת של אדם.

המשימה שלך היא להשלים את הגדרת המבנה Person כדי להטמיע את המבנה Address. פקודות ההדפסה ב-main כבר קוראות ישירות לשדות הכתובת של האדם (person.Street, person.City, person.ZipCode); הן יתקמפלו לאחר הטמעת Address.

נסו בעצמכם

package main

import "fmt"

// ה־struct ‏Address מכיל מידע על המיקום
type Address struct {
	Street  string
	City    string
	ZipCode string
}

// ה־struct ‏Person צריך להטמיע את ה־struct ‏Address
type Person struct {
	Name string
	Age  int
	// TODO: להטמיע כאן את ה־struct ‏Address (שורה אחת בלבד)
}

func main() {
	// צור אדם חדש עם פרטי כתובת
	person := Person{
		Name: "Alice",
		Age:  30,
		Address: Address{
			Street:  "123 Main St",
			City:    "Wonderland",
			ZipCode: "12345",
		},
	}

	// הדפס את פרטי האדם, כולל הכתובת
	fmt.Println("Name:", person.Name)
	fmt.Println("Age:", person.Age)
	
	// הדפס את שדות הכתובת ישירות ממופע ה־person
	fmt.Println("Street:", person.Street)
	fmt.Println("City:", person.City)
	fmt.Println("ZipCode:", person.ZipCode)
}
quiz iconבחנו את עצמכם

השיעור הזה כולל חידון קצר. התחילו את השיעור כדי לענות עליו ולעקוב אחרי ההתקדמות.

כל השיעורים ביחידה יסודות

תרגלו בעצמכם: קומפיילר Go אונליין