逐行篩選器是常見的程式類型,以 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 執行期間的錯誤。檔案尾 (End of file) 是可預期的,Scan 也不會將檔案尾報告為錯誤。
|
if err := scanner.Err(); err != nil {
fmt.Fprintln(os.Stderr, "error:", err)
os.Exit(1)
}
}
|