دروس الوحدة (5/5)
الإدخال / الإخراج مع FMT
تعد حزمة fmt الخاصة بالمكتبة القياسية هي أداتك الرئيسية للطباعة
وحدة التحكم وتنسيق السلاسل وقراءة المدخلات. إذا كنت قد استخدمت
printf في لغة C ستشعر وكأنك في بيتك، ولكن مع بعض التحسينات الإضافية
بفضل الأفعال %v و%T.
الطباعة، Println، Printf: ثلاث وظائف، ثلاثة سلوكيات
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 |
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) // float64Sprintf: إنشاء سلاسل دون طباعتها
نفس واجهة Printf، ولكن يتم إرجاع النتيجة إليك كملف
محمي_INLINE_35:
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 (سنغطي هذا بالتفصيل في وحدة الواجهات):
if _, err := os.Open("missing"); err != nil {
return fmt.Errorf("apertura config: %w", err)
}دورك
اطبع السلسلة "ciao mondo" باستخدام fmt.Println.
إظهار التلميح
`fmt.Println` يأخذ سلسلة ويضيف السطر الجديد نفسه.
الحل متاح بعد 3 من المحاولات
استخدم fmt.Printf لطباعة 'eta=36' متبوعًا بسطر جديد، باستخدام الفعل %d للعدد الصحيح.
إظهار التلميح
لا يضيف `Printf` سطرًا جديدًا: يجب عليك تضمين `\\n` في سلسلة التنسيق.
الحل متاح بعد 3 من المحاولات
ما الفعل الذي يطبع النوع الديناميكي للقيمة؟
fmt.Printf("?\n", 3.14)خلاصة
Print/Println/Printfتختلف في المسافات والأسطر الجديدة.%vهو حرف البدل الذي يعمل على أي نوع؛%+vيعرض أسماء الحقول.%Tيطبع النوع (مفيد للتصحيح السريع).Sprintfيبني السلاسل؛Errorfيُنشئ أخطاء باستخدام الالتفاف (%w).Printfلا يضيف سطرًا جديدًا: اكتبه بنفسك في سلسلة التنسيق.