المؤشرات من النوع Nil
جزء من قسم Fundamentals في رحلة GO على Coddy — الدرس 65 من 109.
إن nil pointer هو مؤشر لا يشير إلى أي شيء. وهو القيمة الصفرية (zero value) لأنواع المؤشرات.
قم بالتصريح عن مؤشر nil:
var ptr *int
fmt.Println(ptr)
fmt.Println(ptr == nil)يوضح المخرج أن المؤشر هو nil:
<nil>
trueمحاولة إلغاء إسناد مؤشر فارغ (nil pointer) تؤدي إلى حدوث panic:
var ptr *int
// سيؤدي هذا إلى تعطل برنامجك
// fmt.Println(*ptr)تحقق دائماً مما إذا كان المؤشر (pointer) يساوي nil قبل إلغاء المرجعية (dereferencing):
if ptr != nil {
fmt.Println(*ptr)
}التحدي
مبتدئفي هذا التحدي، ستعمل مع مؤشرات nil في لغة Go. مؤشر nil هو مؤشر لا يشير إلى أي عنوان ذاكرة.
مهمتك هي التحقق مما إذا كان المؤشر nil وطباعة رسالة مناسبة.
يحتوي الكود بالفعل على متغير مؤشر تم تعيينه إلى nil. تحتاج إلى إضافة كود للتحقق مما إذا كان المؤشر nil وطباعة رسالة بناءً على ذلك.
ورقة مرجعية
الـ nil pointer هو مؤشر لا يشير إلى أي شيء. وهو القيمة الصفرية (zero value) لأنواع المؤشرات.
التصريح عن nil pointer:
var ptr *int
fmt.Println(ptr) // <nil>
fmt.Println(ptr == nil) // trueتحقق دائماً مما إذا كان المؤشر nil قبل إلغاء المرجعية (dereferencing) لتجنب التوقف المفاجئ (panics):
if ptr != nil {
fmt.Println(*ptr)
}جرّب بنفسك
package main
import "fmt"
func main() {
// هذا مؤشر nil لنوع عدد صحيح (int)
var ptr *int
// TODO: تحقق مما إذا كان ptr هو nil
// إذا كان nil، اطبع "The pointer is nil"
// إذا لم يكن nil، اطبع "The pointer is not nil"
fmt.Println("Program completed")
}يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.
جميع دروس Fundamentals
4معاملات المقارنة والمعاملات المنطقية
معاملات المقارنة - الجزء 1معاملات المقارنة - الجزء 2معامل AND المنطقيمعامل OR المنطقيمعامل NOT المنطقيأساسيات أولوية المعاملاتملخص - إجراء المقارنات7تدفق التحكم: الحلقات التكرارية
شرح حلقة `for`حلقة `for` - أساسياتحلقة `for` - بشرط فقطالكلمة المفتاحية `break`الكلمة المفتاحية `continue`الحلقات المتداخلةملخص - تكرار العمليات2المتغيرات وأنواع البيانات الأساسية
ما هو المتغير؟استنتاج النوع باستخدام `:=`الأعداد الصحيحة (int)أرقام الفاصلة العائمةالقيم المنطقية (Booleans)النصوص (Strings)القيم الصفريةالثوابتقواعد التسميةملخص - المتغيرات والأنواع5الإدخال والإخراج الأساسي
المخرجات المنسقةرموز التنسيقطباعة الأنواعالحصول على مدخلات المستخدم الأساسيةملخص - الإدخال والإخراج8الدوال
فهم الدوالالتصريح عن دالةاستدعاء الدوالمعاملات الدالةإرجاع قيمة واحدةإرجاع قيم متعددةقيم الإرجاع المسماةأساسيات نطاق الدالةملخص - إنشاء كود قابل لإعادة الاستخدام3المعاملات الأساسية
المعاملات الحسابيةمعامل القسمةمعامل باقي القسمةمعامل التعيينمعاملات التعيين المركبةالزيادة والنقصانملخص - الحسابات6تدفق التحكم: الجمل الشرطية
جملة `if`الكلمة المفتاحية `else`الكلمة المفتاحية `else if`تظليل المتغيرات في `if`تهيئة المتغيراتجملة `switch``switch` مع التعبيرات`switch` بدون تعبيرالكلمة المفتاحية `fallthrough`ملخص - اتخاذ القرارات