Menu
Coddy logo textTech
flag Ar iconالعربيةdown icon

الـ Structs كـ Classes

جزء من قسم Object Oriented Programming في رحلة GO على Coddy — الدرس 6 من 107.

تؤدي الـ Structs في لغة Go نفس الغرض الذي تؤديه الأصناف (classes) في اللغات الأخرى. فهي تقوم بتجميع البيانات ذات الصلة معاً في نوع واحد.

تعريف struct بأنواع حقول متعددة

type Car struct {
    Brand string
    Model string
    Year  int
    Price float64
}

إنشاء مثيل باستخدام أسماء الحقول

car := Car{
    Brand: "Toyota",
    Model: "Camry",
    Year:  2023,
    Price: 28000.50,
}

الوصول إلى الحقول وتعديلها

fmt.Println(car.Brand) // Toyota
fmt.Println(car.Year)  // 2023

car.Price = 27000.00   // تعديل حقل
fmt.Println(car.Price) // 27000

يمكن أن تحتوي الـ Structs على Structs أخرى

type Engine struct {
    Horsepower int
    FuelType   string
}

type Car struct {
    Brand  string
    Model  string
    Engine Engine
}

car := Car{
    Brand:  "Ford",
    Model:  "Mustang",
    Engine: Engine{Horsepower: 450, FuelType: "Gasoline"},
}
fmt.Println(car.Engine.Horsepower) // 450

تقوم الهياكل (Structs) بتجميع الحقول ذات الصلة معاً. يمكنك الوصول إلى الحقول باستخدام عامل النقطة (dot operator)، ويمكنك تضمين الهياكل داخل هياكل أخرى لبناء نماذج بيانات معقدة.

challenge icon

التحدي

متوسط

قم بتعريف هيكل Profile مع الحقول التالية:

  • Name — string
  • Email — string
  • Age — int
  • Role — string

ورقة مرجعية

تقوم الهياكل (Structs) في لغة Go بتجميع البيانات ذات الصلة معاً في نوع واحد، وهي تشبه الفئات (classes) في اللغات الأخرى.

قم بتعريف هيكل (struct) بأنواع حقول متعددة:

type Car struct {
    Brand string
    Model string
    Year  int
    Price float64
}

قم بإنشاء مثيل (instance) باستخدام أسماء الحقول:

car := Car{
    Brand: "Toyota",
    Model: "Camry",
    Year:  2023,
    Price: 28000.50,
}

الوصول إلى الحقول وتعديلها باستخدام عامل النقطة (dot operator):

fmt.Println(car.Brand) // Toyota
car.Price = 27000.00   // Modify a field

يمكن أن تحتوي الهياكل على هياكل أخرى (هياكل متداخلة - nested structs):

type Engine struct {
    Horsepower int
    FuelType   string
}

type Car struct {
    Brand  string
    Model  string
    Engine Engine
}

car := Car{
    Brand:  "Ford",
    Model:  "Mustang",
    Engine: Engine{Horsepower: 450, FuelType: "Gasoline"},
}
fmt.Println(car.Engine.Horsepower) // 450

جرّب بنفسك

package main

import "fmt"

func main() {
    var name, email, role string
    var age int
    fmt.Scan(&name, &email, &age, &role)

    p := Profile{
        Name:  name,
        Email: email,
        Age:   age,
        Role:  role,
    }

    fmt.Printf("Name: %s\n", p.Name)
    fmt.Printf("Email: %s\n", p.Email)
    fmt.Printf("Age: %d\n", p.Age)
    fmt.Printf("Role: %s\n", p.Role)
}
quiz iconاختبر نفسك

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

جميع دروس Object Oriented Programming