"إذا أراد العامل أن يؤدي عمله بشكل جيد، فعليه أولاً أن يشحذ أدواته." - كونفوشيوس، "مختارات كونفوشيوس. لو لينجونج"
الصفحة الأمامية > برمجة > هل هناك طريقة للتحقق مما إذا كان الإدخال القياسي (os.Stdin) في Go يحتوي على بيانات دون حظر؟

هل هناك طريقة للتحقق مما إذا كان الإدخال القياسي (os.Stdin) في Go يحتوي على بيانات دون حظر؟

تم النشر بتاريخ 2024-11-15
تصفح:461

Is there a way to check if standard input (os.Stdin) in Go has data without blocking?

كيفية تحديد مدى توفر البيانات في Stdin باستخدام Go

سؤال

في Go، هل هناك طريقة موثوقة للتحقق مما إذا كان تدفق الإدخال (نظام التشغيل .Stdin) يحتوي على بيانات؟

المنهج التقليدي للقراءة من كتل التدفق في حالة عدم توفر بيانات، مما يجعله غير عملي في حالات استخدام معينة.

الإجابة

مشابه لـ الملفات الأخرى، يمكن فحص os.Stdin لتحديد حجمها، مما يوفر طريقة مناسبة لاكتشاف توفر البيانات.

package main

import (
    "fmt"
    "os"
)

func main() {
    file := os.Stdin
    fi, err := file.Stat()
    if err != nil {
        fmt.Println("file.Stat()", err)
    }
    size := fi.Size()
    if size > 0 {
        fmt.Printf("%v bytes available in Stdin\n", size)
    } else {
        fmt.Println("Stdin is empty")
    }
}

من خلال استخدام هذه التقنية، يمكنك التمييز بين مدخلات stdin الفارغة وغير الفارغة، مما يسمح بمعالجة أكثر مرونة لتوفر البيانات.

أحدث البرنامج التعليمي أكثر>

تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.

Copyright© 2022 湘ICP备2022001581号-3