Menu
CoddyTech

Struct מוטמעים

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

Go מאפשרת לשלב struct אחד בתוך struct אחר, וכך ליצור קשרי הרכבה. זו הגישה של 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 אונליין