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

دالة جديدة

الدرس 3 من 19 في دورة الدوال والمؤشرات في Golang على Coddy.

في الدروس الأخيرة، تعلمنا أن المتغيرات هي كائنات أو مساحات في الذاكرة لها اسم يشير إلى تلك المساحة.

في لغة Go، لدينا دالة تنشئ مساحة غير مسمى في الذاكرة، ونقوم بذلك بمساعدة الدالة new(). الصيغة هي كما يلي:

coddy := new(string)

هنا، قمنا بإنشاء كائن باسم coddy ونوع string، وتعيد الدالة new() مؤشراً إلى ذلك الكائن (المساحة).

إذا قمنا بطباعة الاسم، فسنحصل على عنوان الذاكرة لهذه المساحة:

fmt.Println("Value:", coddy)

ستكون النتيجة:

Value: 0xc000014070

يمكننا إعادة تعيين قيمة لهذا المؤشر بهذا الشكل:

coddy := new(string)
*coddy = "Learn To Code with coddy"
fmt.Println("Value:", *coddy)

ستكون النتيجة:

Value: Learn To Code with coddy

لاحظ أنه عندما نقوم بإنشاء مؤشرات باستخدام الدالة new()، فإن القيمة الافتراضية ليست nil. بل تعتمد على النوع، تماماً مثل المتغيرات. إذا كان النوع int، فإن القيمة الافتراضية هي 0؛ وبالنسبة لـ string، فهي سلسلة نصية فارغة؛ وبالنسبة لـ boolean، فهي false.

challenge icon

التحدي

سهل

اكتب برنامجاً يأخذ مدخلاً من المستخدم ويقوم بما يلي:

  1. ينشئ مؤشراً من النوع int باستخدام الدالة new().
  2. يطبع القيمة الافتراضية للمؤشر.
  3. يسند القيمة التي أدخلها المستخدم إلى ذلك المؤشر.
  4. يطبع قيمة المؤشر بعد عملية الإسناد.

جرّب بنفسك

package main

import (
	"fmt"
)

func main() {
	// خذ مدخلاً من المستخدم لا تغير هذا!
	var num int
	fmt.Scanln(&num)

	// أنشئ مؤشراً من نوع int باستخدام الدالة new().
 

	// يطبع القيمة الافتراضية للمؤشر.
    fmt.Println("Default value of the pointer:", ?)

	// يسند القيمة التي أدخلها المستخدم إلى ذلك المؤشر
 

	// يطبع قيمة المؤشر بعد الإسناد.
    fmt.Println("Value of the pointer after assignment:", ?)
}

جميع دروس الدوال والمؤشرات في Golang