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 عبر الإنترنت