Go Academy · درس

مسح الإدخال

اقرأ الإدخال المنسّق

الدرس 4 من 413 خطوة

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

قراءة الإدخال باستخدام fmt

يمكن لحزمة fmt قراءة القيم، لا طباعتها فحسب. إذ تحلل دوال القراءة النص وتحوله إلى متغيرات ذات أنواع محددة.

وهي تمثل النظير المقابل لدوال الطباعة.

package main

import "fmt"

func main() {
    var n int
    fmt.Sscan("42", &n)
    fmt.Println(n + 1)
}

المؤشرات مطلوبة

يجب أن تخزّن دوال القراءة النتيجة، لذلك مرّر عنوان كل متغير باستخدام &.

إن نسيان & هو أكثر أخطاء القراءة شيوعًا.

package main

import "fmt"

func main() {
    var a, b int
    fmt.Sscan("3 4", &a, &b)
    fmt.Println(a + b)
}

تقسم Sscan عند المسافات

تقرأ fmt.Sscan القيم المفصولة بمسافات من سلسلة نصية إلى عدة متغيرات، وتستنتج النوع من كل مؤشر.

package main

import "fmt"

func main() {
    var name string
    var age int
    fmt.Sscan("Ada 36", &name, &age)
    fmt.Println(name, age)
}

تستخدم Sscanf تنسيقًا

تحلل fmt.Sscanf النص وفقًا لسلسلة تنسيق، تمامًا مثل Printf ولكن بالعكس. ويجب أن تتطابق الأحرف الحرفية في التنسيق مع الإدخال.

package main

import "fmt"

func main() {
    var h, m int
    fmt.Sscanf("09:05", "%d:%d", &h, &m)
    fmt.Println(h, m)
}

التحقق من عدد القيم المقروءة

تعيد دوال القراءة عدد العناصر التي حُللت بنجاح وخطأً. تحقّق من العدد لمعرفة ما إذا نجح التحليل بالكامل.

package main

import "fmt"

func main() {
    var a, b int
    count, _ := fmt.Sscan("7", &a, &b)
    fmt.Println("parsed:", count)
}

معالجة أخطاء التحليل

إذا لم يطابق الإدخال النوع المتوقع، فسيُعاد خطأ. افحصه دائمًا عند التعامل مع إدخال حقيقي.

package main

import "fmt"

func main() {
    var n int
    _, err := fmt.Sscan("notanumber", &n)
    if err != nil {
        fmt.Println("error:", err)
    }
}

تحليل أنواع مختلطة

يمكنك قراءة عدة أنواع مختلفة في استدعاء واحد. ويحدد نوع كل مؤشر كيفية تحليل الرمز الخاص به.

package main

import "fmt"

func main() {
    var word string
    var price float64
    var ok bool
    fmt.Sscan("apple 1.50 true", &word, &price, &ok)
    fmt.Println(word, price, ok)
}

استخدام Sscanf مع نص حرفي

تُعد Sscanf مناسبة جدًا للأشكال الثابتة، مثل الإحداثيات أو أزواج المفتاح والقيمة، حيث تفصل علامات الترقيم بين الأعداد.

package main

import "fmt"

func main() {
    var x, y int
    fmt.Sscanf("(3,8)", "(%d,%d)", &x, &y)
    fmt.Println(x, y)
}

قراءة الأعداد العشرية

استخدم %f في Sscanf أو *float64 في Sscan لقراءة الأعداد العشرية.

package main

import "fmt"

func main() {
    var temp float64
    fmt.Sscanf("21.5C", "%fC", &temp)
    fmt.Println(temp)
}

Scan مقارنةً بـ Stdin

تقرأ fmt.Scan وfmt.Scanf من الإدخال القياسي بالطريقة نفسها التي تقرأ بها Sscan من سلسلة نصية. وقواعد التحليل متطابقة؛ والاختلاف الوحيد هو المصدر.

package main

import "fmt"

func main() {
    line := "100 200"
    var a, b int
    fmt.Sscan(line, &a, &b)
    fmt.Println(a * b)
}

محلل صغير

اجمع بين القراءة والحساب لتحليل سجل وإنتاج نتيجة.

package main

import "fmt"

func main() {
    var name string
    var qty int
    var unit float64
    fmt.Sscanf("pen 3 1.25", "%s %d %f", &name, &qty, &unit)
    fmt.Printf("%s total: $%.2f\n", name, float64(qty)*unit)
}

تحقق سريع

ما الذي يجب تمريره إلى دالة قراءة لتخزين النتيجة؟

مراجعة: قراءة الإدخال

تعلّمت قراءة الإدخال المنسّق:

  • تقسم Sscan الإدخال عند المسافات البيضاء؛ وتتبع Sscanf سلسلة تنسيق.
  • مرّر مؤشرات باستخدام & لكل هدف.
  • تحقّق من العدد والخطأ المُعادَين لاكتشاف الإدخال غير الصحيح.
package main

import "fmt"

func main() {
    var d, mo, y int
    fmt.Sscanf("30/05/2026", "%d/%d/%d", &d, &mo, &y)
    fmt.Println(y, mo, d)
}
البدء مجانًا

تعلم Go مع معلم ذكاء اصطناعي — مجانًا

اكتب وقم بتشغيل أكوادك الفعلية في المتصفح، واحصل على مساعدة فورية من معلم ذكاء اصطناعي متاح 24/7، واستمر من حيث توقفت على الويب أو في التطبيق.

الدورات
51
الدروس
203

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

هل درس «مسح الإدخال» مجاني؟

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

ماذا ستتعلم في «مسح الإدخال»؟

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

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

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

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

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

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

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

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

  1. أحرف تنسيق Printf
  2. Sprintf وFprintf
  3. واجهة Stringer
  4. مسح الإدخال
← العودة إلى Go Academy