0Pricing
Go Academy · درس

دوال الخيارات

اضبط الإعدادات باستخدام الدوال

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

الإعداد باستخدام الدوال

الفكرة الأساسية هي تمثيل كل إعداد اختياري على هيئة دالة تعدّل الإعدادات. وتُسمى هذه الدوال «دوال الخيارات».

نوع الخيار

عرّف Option على أنه دالة تأخذ مؤشرًا إلى بنية الإعدادات.

package main

import "fmt"

type Config struct {
	Port    int
	Timeout int
}

type Option func(*Config)

func main() {
	var o Option
	fmt.Println(o == nil)
}

كتابة خيار

يعيد الخيار إغلاقًا يضبط حقلًا واحدًا. ينتج WithPort(9000) دالةً تسند Port = 9000.

package main

import "fmt"

type Config struct{ Port int }
type Option func(*Config)

func WithPort(p int) Option {
	return func(c *Config) { c.Port = p }
}

func main() {
	c := &Config{}
	WithPort(9000)(c)
	fmt.Println(c.Port)
}

تلتقط الإغلاقات القيمة

تُجري الدالة المعادة إغلاقًا على المعامل. إذ تتذكر WithPort(9000) القيمة 9000 إلى أن يتم تطبيقها لاحقًا.

خيارات متعددة

يحصل كل إعداد على دالة خيار خاصة به. وتشترك جميعها في نوع Option.

package main

import "fmt"

type Config struct {
	Port    int
	Timeout int
}
type Option func(*Config)

func WithPort(p int) Option    { return func(c *Config) { c.Port = p } }
func WithTimeout(t int) Option { return func(c *Config) { c.Timeout = t } }

func main() {
	c := &Config{}
	WithPort(80)(c)
	WithTimeout(15)(c)
	fmt.Printf("%+v\n", *c)
}

خيارات أعلام القيم المنطقية

يمكن لخيار بلا معاملات تبديل أحد الأعلام.

package main

import "fmt"

type Config struct{ TLS bool }
type Option func(*Config)

func WithTLS() Option { return func(c *Config) { c.TLS = true } }

func main() {
	c := &Config{}
	WithTLS()(c)
	fmt.Println(c.TLS)
}

تطبيق شريحة من الخيارات

اجمع الخيارات في شريحة وطبّق كل خيار ضمن حلقة — هذا هو جوهر الباني الذي ستنشئه لاحقًا.

package main

import "fmt"

type Config struct{ Port, Timeout int }
type Option func(*Config)

func WithPort(p int) Option    { return func(c *Config) { c.Port = p } }
func WithTimeout(t int) Option { return func(c *Config) { c.Timeout = t } }

func main() {
	c := &Config{}
	opts := []Option{WithPort(8080), WithTimeout(30)}
	for _, opt := range opts {
		opt(c)
	}
	fmt.Printf("%+v\n", *c)
}

الترتيب مهم

تُطبّق الخيارات بالترتيب. إذا ضبط خياران الحقل نفسه، يفوز الخيار الأخير — وقد يكون ذلك مفيدًا أحيانًا، لكنه قد يؤدي أيضًا إلى أخطاء يصعب اكتشافها، لذا ينبغي توثيقه.

اصطلاح التسمية

وفقًا للاصطلاح، تُسمى بُناة الخيارات With...، مثل WithPort وWithTLS، بحيث تُقرأ مواضع الاستدعاء مثل اللغة الإنجليزية.

يمكن للخيارات احتواء منطق

الخيار مجرد دالة، لذا يمكنه التحقق من القيم أو حسابها أو دمجها، وليس إسنادها فحسب.

لماذا تتفوق الدوال على البُنى هنا

  • تضبط الحقول التي تذكرها فقط
  • تستخدم أسماء توضّح نفسها في موضع الاستدعاء
  • تتيح إضافة خيارات جديدة من دون كسر المستدعين

اختبار سريع

اختبر معرفتك بدوال الخيارات.

مراجعة

لقد تعلمت إنشاء دوال الخيارات.

  • عرّف type Option func(*Config)
  • تعيد بُناة WithX إغلاقات تعدّل الإعدادات
  • طبّق شريحة من الخيارات ضمن حلقة
  • الترتيب مهم؛ والكتابة الأخيرة هي المعتمدة

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

هل درس «دوال الخيارات» مجاني؟

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

ماذا ستتعلم في «دوال الخيارات»؟

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

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

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

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

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

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

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

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

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