Menu
CoddyTech

الـ Structs المضمنة

جزء من قسم الأساسيات في رحلة 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"

// يحتوي هيكل Address على معلومات الموقع
type Address struct {
	Street  string
	City    string
	ZipCode string
}

// يجب أن يضمّن هيكل Person هيكل Address
type Person struct {
	Name string
	Age  int
	// TODO: ضمّن هيكل 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)
	
	// اطبع حقول العنوان مباشرةً من نسخة الشخص
	fmt.Println("Street:", person.Street)
	fmt.Println("City:", person.City)
	fmt.Println("ZipCode:", person.ZipCode)
}
quiz iconاختبر نفسك

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

جميع دروس الأساسيات

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