라인 필터 (line filter)는 stdin으로 입력을 읽고, 처리한 후, 나온 결괏값을 stdout으로 출력하는 일반적인 유형의 프로그램입니다. |
|
다음은 모든 입력 텍스트의 대문자 버전을 작성하는 Go의 라인 필터 예제입니다. 여러분만의 Go 라인 필터를 작성하는데 이 패턴을 사용할 수 있습니다. |
package main
|
import (
"bufio"
"fmt"
"os"
"strings"
)
|
|
func main() {
|
|
버퍼링되지 않은 |
scanner := bufio.NewScanner(os.Stdin)
|
|
for scanner.Scan() {
|
ucl := strings.ToUpper(scanner.Text())
|
|
대문자로된 문자열을 라인에 씁니다. |
fmt.Println(ucl)
}
|
|
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
|
다음 예제: 커맨드라인 인자.