行フィルター とは、標準入力で読み取り、それを処理し、派生した結果を標準出力に出力する一般的なタイプのプログラムです。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)
}
}
|