Menu
CoddyTech
flag Ar iconالعربيةdown icon

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