reader.ReadString لا يزيل المحدد الأولي
في محاولة لإنشاء برنامج يرحب بالمستخدمين المسمى أليس أو بوب، المطور واجه مشكلة حيث تسببت الأسماء الشرعية في استجابة غير مرحب بها. رفض البرنامج بشكل غير صحيح دخول كل من أليس وبوب.
المشكلة
تنبع المشكلة من استخدام Reader.ReadString('\n') في البرنامج . تقوم هذه الوظيفة باسترداد الأحرف حتى يتم العثور على حرف السطر الجديد. ومع ذلك، فإنه لا يقوم تلقائيًا بإزالة المحدد من السلسلة التي تم إرجاعها، مما يؤدي إلى تضمين سطر جديد إضافي في إدخال المستخدم.
الحل
لحل هذه المشكلة ، هناك طريقتان محتملتان:
1. قم بقص السطر الجديد
استخدم الدالة strings.TrimSpace لإزالة أي مسافة بيضاء بادئة أو لاحقة من سلسلة الإدخال قبل تقييمها. يؤدي هذا إلى إزالة حرف السطر الجديد الذي تسبب في المشكلة بشكل فعال.
if aliceOrBob(strings.TrimSpace(text)) { fmt.Printf("Hello, ", text) }
2. استخدم ReadLine بدلاً من ReadString
بدلاً من ذلك، يمكن استخدام وظيفة ReadLine بدلاً من ReadString. يقوم ReadLine باسترداد سطر من النص دون تضمين حرف السطر الجديد في السلسلة التي تم إرجاعها.
text, _, _ := reader.ReadLine() if aliceOrBob(string(text)) { fmt.Printf("Hello, ", text) }
شرح
سبب استخدام السلسلة (النص) مع ReadLine هو أن ReadLine يُرجع شريحة بايت، بينما يتطلب aliceOrBob وسيطة سلسلة.
تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.
Copyright© 2022 湘ICP备2022001581号-3