كيفية قراءة البيانات من الإدخال القياسي (stdin) في تطبيق وحدة تحكم بلغة Go؟
مرحباً بالجميع! لقد بدأت للتو في تعلم Go وأقوم بكتابة أداة وحدة تحكم بسيطة. أحتاج إلى أن يطلب البرنامج من المستخدم الاسم والعمر، ثم يعرض تحية. لكنني لا أستطيع فهم كيفية قراءة السطر الذي يدخله المستخدم في الطرفية بشكل صحيح.
لقد جربت استخدام `fmt.Scan()`، لكنه يبدو أنه يقرأ فقط حتى أول مسافة. إذا أدخلت "إيفان بيتروف"، فإنه يقرأ فقط "إيفان". وماذا لو كنت بحاجة لقراءة سطر كامل مع مسافات؟ أو رقم؟
إليك الكود الحالي الذي لا يعمل كما ينبغي:
```go
package main
import "fmt"
func main() {
var name string
var age int
fmt.Print("أدخل الاسم: ")
fmt.Scan(&name) // المشكلة: يقرأ فقط حتى المسافة
fmt.Print("أدخل العمر: ")
fmt.Scan(&age)
fmt.Printf("مرحباً، %s! عمرك %d سنة.\n", name, age)
}
```
إذا أدخلت "آنا 25"، فإن البرنامج ينتهي فوراً دون انتظار الإدخال الثاني، ويطبع شيئاً غريباً. كيف يمكن قراءة الأسطر بشكل صحيح؟