الانتقال إلى المحتوى الرئيسي
الوحدة 1 · الدرس 5 من 55/50 في الدورة~10 min
دروس الوحدة (5/5)

الإدخال / الإخراج مع FMT

تعد حزمة fmt الخاصة بالمكتبة القياسية هي أداتك الرئيسية للطباعة وحدة التحكم وتنسيق السلاسل وقراءة المدخلات. إذا كنت قد استخدمت printf في لغة C ستشعر وكأنك في بيتك، ولكن مع بعض التحسينات الإضافية بفضل الأفعال %v و%T.

الطباعة، Println، Printf: ثلاث وظائف، ثلاثة سلوكيات

Go
fmt.Print("ciao ", "mondo")    // "ciao mondo"  (niente newline finale)
fmt.Println("ciao", "mondo")   // "ciao mondo\n" (newline + spazi tra argomenti)
fmt.Printf("eta=%d\n", 36)     // "eta=36\n"    (format string esplicita)

الأفعال التي سوف تستخدمها في كل وقت

فعلما يطبعمثال
محمي_INLINE_9"القيمة الافتراضية" — تعمل على أي نوعمحمي_INLINE_10
محمي_INLINE_11مثل %v ولكن مع أسماء الحقول في الهياكلمحمي_INLINE_13
محمي_INLINE_14تمثيل "بناء جملة Go" للقيمةمحمي_INLINE_15
محمي_INLINE_16نوع القيمةمحمي_INLINE_17
محمي_INLINE_18عدد صحيح في الأساس 10محمي_INLINE_19
محمي_INLINE_20تعويممحمي_INLINE_21
محمي_INLINE_22تعويم مع رقمين عشريينمحمي_INLINE_23
محمي_INLINE_24سلسلةمحمي_INLINE_25
محمي_INLINE_26سلسلة "مقتبسة" (مع علامات اقتباس وهروب)محمي_INLINE_27
محمي_INLINE_28منطقيمحمي_INLINE_29
محمي_INLINE_30سداسي عشري (أحرف صغيرة)محمي_INLINE_31
محمي_INLINE_32ثنائيمحمي_INLINE_33
Go
u := struct{ Name string; Age int }{"Ada", 36}
fmt.Printf("%v\n", u)   // {Ada 36}
fmt.Printf("%+v\n", u)  // {Name:Ada Age:36}
fmt.Printf("%T\n", 3.14) // float64

Sprintf: إنشاء سلاسل دون طباعتها

نفس واجهة Printf، ولكن يتم إرجاع النتيجة إليك كملف محمي_INLINE_35:

Go
msg := fmt.Sprintf("L'utente %s ha %d anni", "Ada", 36)
fmt.Println(msg) // L'utente Ada ha 36 anni

ستستخدمه باستمرار لإنشاء الرسائل والسجلات والأخطاء.

Errorf: سلاسل + التفاف الخطأ

fmt.Errorf ينشئ error بتنسيق نمط Printf. مع الفعل الخاص %w يمكنك ** تغليف ** خطأ موجود للحفاظ عليه chain (سنغطي هذا بالتفصيل في وحدة الواجهات):

Go
if _, err := os.Open("missing"); err != nil {
    return fmt.Errorf("apertura config: %w", err)
}

دورك

تمرين#go.m1.l5.e1
المحاولات: 0جارٍ التحميل…

اطبع السلسلة "ciao mondo" باستخدام fmt.Println.

جارٍ تحميل المحرر…
إظهار التلميح

`fmt.Println` يأخذ سلسلة ويضيف السطر الجديد نفسه.

الحل متاح بعد 3 من المحاولات

تمرين#go.m1.l5.e2
المحاولات: 0جارٍ التحميل…

استخدم fmt.Printf لطباعة 'eta=36' متبوعًا بسطر جديد، باستخدام الفعل %d للعدد الصحيح.

جارٍ تحميل المحرر…
إظهار التلميح

لا يضيف `Printf` سطرًا جديدًا: يجب عليك تضمين `\\n` في سلسلة التنسيق.

الحل متاح بعد 3 من المحاولات

Quiz#go.m1.l5.e3
جاهز

ما الفعل الذي يطبع النوع الديناميكي للقيمة؟

Go
fmt.Printf("?\n", 3.14)
خيارات الإجابة

خلاصة

  • Print/Println/Printf تختلف في المسافات والأسطر الجديدة.
  • %v هو حرف البدل الذي يعمل على أي نوع؛ %+v يعرض أسماء الحقول.
  • %T يطبع النوع (مفيد للتصحيح السريع).
  • Sprintf يبني السلاسل؛ Errorf يُنشئ أخطاء باستخدام الالتفاف (%w).
  • Printf لا يضيف سطرًا جديدًا: اكتبه بنفسك في سلسلة التنسيق.