0Pricing
Go Academy · درس

التحقّق من الوجود

تعرّف على أسلوب comma-ok

التحقّق من الوجود درس مجاني في Go Academy على CoddyKit. هذا هو الدرس 2 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في Go Academy، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة Go Academy 4 دروس في المجموع.

المفاتيح المفقودة تعيد القيمة الصفرية

عند قراءة مفتاح غير موجود، تعيد Go القيمة الصفرية لنوع القيمة، وليس خطأً. بالنسبة إلى int تكون القيمة 0، وبالنسبة إلى string تكون سلسلة نصية فارغة.

package main

import "fmt"

func main() {
	m := map[string]int{"a": 5}
	fmt.Println(m["missing"])
}

مشكلة الالتباس

إذا أُعيدت القيمة 0، فكيف تعرف ما إذا كان المفتاح موجودًا وقيمته 0، أم أنه غير موجود أصلًا؟ لا يمكنك معرفة ذلك من القيمة وحدها.

اصطلاح Comma-Ok

يمكن أن يعيد الوصول إلى الخريطة قيمتين: القيمة وقيمة منطقية. تكون القيمة المنطقية true إذا كان المفتاح موجودًا. يُسمى هذا اصطلاح Comma-Ok.

package main

import "fmt"

func main() {
	m := map[string]int{"a": 0}
	val, ok := m["a"]
	fmt.Println(val, ok)
}

تمييز المفاتيح غير الموجودة

يمكنك الآن التمييز بين الحالتين. يعيد المفتاح الموجود ok = true حتى إذا كانت قيمته هي القيمة الصفرية.

package main

import "fmt"

func main() {
	m := map[string]int{"a": 0}
	_, okA := m["a"]
	_, okB := m["b"]
	fmt.Println("a exists:", okA, "b exists:", okB)
}

التحقق قبل التنفيذ

نمط شائع: استخدم Comma-Ok داخل if لتنفيذ الإجراء فقط عندما يكون المفتاح موجودًا.

package main

import "fmt"

func main() {
	prices := map[string]int{"pen": 3}
	if p, ok := prices["pen"]; ok {
		fmt.Println("price is", p)
	} else {
		fmt.Println("not found")
	}
}

تجاهل القيمة

إذا كان اهتمامك ينحصر في معرفة وجود المفتاح، فاستخدم المعرّف الفارغ _ للقيمة.

package main

import "fmt"

func main() {
	seen := map[string]bool{"x": true}
	_, exists := seen["x"]
	fmt.Println("x seen:", exists)
}

حساب مرات الظهور

يناسب Comma-Ok العدادات بشكل جيد. لكن لاحظ أنه حتى من دون ok تعمل العبارة m[key]++ لأن المفتاح المفقود يبدأ من الصفر.

package main

import "fmt"

func main() {
	counts := map[string]int{}
	for _, w := range []string{"a", "b", "a"} {
		counts[w]++
	}
	fmt.Println(counts)
}

القيم الافتراضية بأمان

يمكنك توفير قيمة بديلة عند غياب المفتاح باستخدام Comma-Ok ومتغير افتراضي.

package main

import "fmt"

func main() {
	cfg := map[string]string{}
	lang, ok := cfg["lang"]
	if !ok {
		lang = "en"
	}
	fmt.Println("lang:", lang)
}

Comma-Ok خارج الخرائط

يظهر الشكل ذو القيمتين أيضًا عند الاستقبال من القنوات وعند تأكيد الأنواع. يظل النمط متسقًا: تشير القيمة الثانية إلى نجاح العملية.

package main

import "fmt"

func main() {
	var i interface{} = "hello"
	s, ok := i.(string)
	fmt.Println(s, ok)
}

التحقق من عضوية مجموعة

غالبًا ما تُستخدم الخرائط ذات القيم المنطقية أو قيم البنى الفارغة لتتبع العضوية. يجيب Comma-Ok بوضوح عن سؤال: هل هذا العنصر موجود في المجموعة؟

package main

import "fmt"

func main() {
	allowed := map[string]struct{}{"read": {}, "write": {}}
	_, ok := allowed["delete"]
	fmt.Println("delete allowed:", ok)
}

أفضل ممارسة

استخدم Comma-Ok دائمًا عندما يمكن أن تكون القيمة الصفرية قيمة مخزنة صحيحة. فهو يزيل الالتباس ويوضح المقصود.

تحقق سريع

قرأت val, ok := m["x"] وحصلت على val = 0, ok = true. ماذا يعني ذلك؟

مراجعة

التحقق من الوجود باستخدام Comma-Ok:

  • تعيد المفاتيح المفقودة القيمة الصفرية
  • تشير val, ok := m[key] إلى وجود المفتاح في ok
  • استخدمه كلما كان من الممكن أن تكون القيمة الصفرية قيمة حقيقية

الأسئلة الشائعة

هل درس «التحقّق من الوجود» مجاني؟

نعم — نص درس «التحقّق من الوجود» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة Go Academy، انتقل إلى CoddyKit PRO. تتضمن دورة Go Academy 4 دروس في المجموع.

ماذا ستتعلم في «التحقّق من الوجود»؟

تعرّف على أسلوب comma-ok تتمرن على Go Academy مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.

هل أحتاج إلى خبرة سابقة لأبدأ Go Academy؟

لا تُشترط خبرة سابقة. Go Academy على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 2 من أصل 4.

كم من الوقت يستغرق درس «التحقّق من الوجود»؟

معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.

هل يمكنني كتابة وتشغيل أكواد في درس Go Academy هذا؟

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

جميع الدروس في هذه الدورة

  1. البنية الداخلية للخرائط
  2. التحقّق من الوجود
  3. الخرائط بوصفها مجموعات
  4. التكرار والترتيب
← العودة إلى Go Academy