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

الـ Structs كـ Classes

جزء من قسم البرمجة كائنية التوجه في رحلة GO على Coddy. الدرس 6 من 107.

تؤدي البُنى في Go الغرض نفسه الذي تؤديه الفئات في اللغات الأخرى. فهي تجمع البيانات المرتبطة معًا ضمن نوع واحد.

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

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

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

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

تجمع البُنى الحقول المرتبطة معًا. يمكنك الوصول إلى الحقول باستخدام عامل النقطة، ويمكنك تضمين البُنى داخل بُنى أخرى لإنشاء نماذج بيانات معقدة.

challenge icon

التحدي

متوسط

عرّف بنية Profile بالحقول التالية:

  • Name: string
  • Email: string
  • Age: int
  • Role: string

جرّب بنفسك

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اختبر نفسك

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

جميع دروس البرمجة كائنية التوجه

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