لغة Go بالأمثلة: مرشحات الأسطر

مرشح الأسطر نوع شائع من البرامج يقرأ المدخلات من stdin ويعالجها، ثم يطبع نتيجة مشتقة إلى stdout. يُعد grep وsed من مرشحات الأسطر الشائعة.

إليك مثالًا على مرشح أسطر في Go يكتب نسخة بأحرف إنجليزية كبيرة من نص المدخلات كله. يمكنك استخدام هذا النمط لكتابة مرشحات الأسطر الخاصة بك في Go.

package main
import (
    "bufio"
    "fmt"
    "os"
    "strings"
)
func main() {

يمنحنا تغليف os.Stdin غير المخزن مؤقتًا بماسح مخزن مؤقتًا الأسلوب الملائم Scan، الذي ينقل الماسح إلى الوحدة التالية؛ وهي السطر التالي في الماسح الافتراضي.

    scanner := bufio.NewScanner(os.Stdin)

تعيد Text الوحدة الحالية من المدخلات، وهي هنا السطر التالي.

    for scanner.Scan() {
        ucl := strings.ToUpper(scanner.Text())

اكتب السطر المحول إلى أحرف إنجليزية كبيرة.

        fmt.Println(ucl)
    }

تحقق من الأخطاء أثناء Scan. نهاية الملف متوقعة، ولا تعدّها Scan خطأ.

    if err := scanner.Err(); err != nil {
        fmt.Fprintln(os.Stderr, "error:", err)
        os.Exit(1)
    }
}

لتجربة مرشح الأسطر، أنشئ أولًا ملفًا يحتوي على بضعة أسطر بأحرف إنجليزية صغيرة.

$ echo 'hello'   > /tmp/lines
$ echo 'filter' >> /tmp/lines

ثم استخدم مرشح الأسطر للحصول على أسطر بأحرف إنجليزية كبيرة.

$ cat /tmp/lines | go run line-filters.go
HELLO
FILTER

المثال التالي: .