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

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

package main

import (
    "bufio"
    "fmt"
    "os"
    "strings"
)

func main() {

استخدام قارئ مؤقت لـ os.Stdin يسمح لنا بالوصول لدالة Scanner المريحة التي تقرأ المدخلات سطراً بسطر.

    scanner := bufio.NewScanner(os.Stdin)

    for scanner.Scan() {

Text تعيد السطر الحالي من المدخلات.

        ucl := strings.ToUpper(scanner.Text())

اطبع السطر المحول.

        fmt.Println(ucl)
    }

تحقق من وجود أخطاء أثناء المسح. EOF لا يعتبر خطأ بواسطة 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

المثال التالي: مسارات الملفات.