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

المؤشرات إلى الـ Structs

جزء من قسم Fundamentals في رحلة GO على Coddy — الدرس 97 من 109.

عند العمل مع الـ structs، يمكنك إنشاء مؤشرات (pointers) لها تماماً كما هو الحال مع الأنواع الأخرى. هذا مفيد لتمرير الـ structs الكبيرة بكفاءة.

قم بتعريف هيكل (struct) من النوع Person وأنشئ مؤشرًا (pointer) إليه:

type Person struct {
    name string
    age  int
}

func main() {
    person := Person{name: "Alice", age: 30}
    
    // إنشاء مؤشر للهيكل
    personPtr := &person
    
    // الوصول إلى الحقول من خلال المؤشر
    fmt.Println(personPtr.name)
    fmt.Println(personPtr.age)
}

يوضح المخرج أنه يمكننا الوصول إلى الحقول من خلال المؤشر:

Alice
30

يمكنك أيضاً تعديل الحقول من خلال المؤشر:

personPtr.age = 31
fmt.Println(person.age)  // يطبع: 31
challenge icon

التحدي

مبتدئ

في هذا التحدي، ستتدرب على التعامل مع المؤشرات (pointers) إلى الهياكل (structs) في لغة Go. لديك هيكل Person يحتوي على حقول name و age. مهمتك هي تحديث معلومات الشخص باستخدام مؤشر للهيكل.

يقوم الكود بالفعل بإنشاء هيكل Person ومؤشر له. تحتاج إلى تعديل معلومات الشخص من خلال المؤشر.

ورقة مرجعية

أنشئ مؤشرات (pointers) للهياكل (structs) باستخدام عامل التشغيل &:

type Person struct {
    name string
    age  int
}

person := Person{name: "Alice", age: 30}
personPtr := &person

الوصول إلى حقول الهيكل وتعديلها من خلال المؤشرات:

// الوصول إلى الحقول
fmt.Println(personPtr.name)
fmt.Println(personPtr.age)

// تعديل الحقول
personPtr.age = 31

جرّب بنفسك

package main

import "fmt"

// هيكل Person مع حقول الاسم والعمر
type Person struct {
	name string
	age  int
}

func main() {
	// إنشاء هيكل Person
	person := Person{
		name: "John",
		age:  25,
	}

	// إنشاء مؤشر (pointer) لهيكل Person
	personPtr := &person

	// طباعة معلومات الشخص الأصلية
	fmt.Println("Original person:")
	fmt.Printf("Name: %s, Age: %d\n", person.name, person.age)

	// TODO: استخدم المؤشر لتغيير اسم الشخص إلى "Jane" والعمر إلى 30
	// تلميح: يمكنك الوصول إلى حقول الهيكل من خلال المؤشر باستخدام تدوين النقطة (dot notation)
	

	// طباعة معلومات الشخص المحدثة
	fmt.Println("Updated person:")
	fmt.Printf("Name: %s, Age: %d\n", person.name, person.age)
}
quiz iconاختبر نفسك

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

جميع دروس Fundamentals