|
فیلتر خطی (line filter) نوع رایجی از برنامه است که
ورودی را از 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)
}
}
|