دالة جديدة
الدرس 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.
التحدي
سهلاكتب برنامجاً يأخذ مدخلاً من المستخدم ويقوم بما يلي:
- ينشئ مؤشراً من النوع int باستخدام الدالة new().
- يطبع القيمة الافتراضية للمؤشر.
- يسند القيمة التي أدخلها المستخدم إلى ذلك المؤشر.
- يطبع قيمة المؤشر بعد عملية الإسناد.
جرّب بنفسك
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
1مقدمة
مقدمة4إعادة بناء دوال Strings في Go
السلاسل النصية في Golangدالة Joinدالة Containsدالة Indexتحدي المراجعة رقم 1