Go 언어 line filter 알아보기
오늘은 Go 언어에서 지원하는 라인 필터를 간단한 코드로 알아보려 합니다.
stdin을 통해 입력을 받은 뒤에 stdout으로 출력하는 프로그램을 라인 필터라고 합니다.
package main
import (
"bufio"
"fmt"
"os"
"strings"
)
스캐너를 만들고, stdin으로 입력을 받기 위해 bufio와 os 패키지를 가져옵니다.
문자열을 조작하기 위해서 strings 패키지를 가져오고, 출력을 위해 fmt 패키지도 가져옵니다.
func main() {
scanner := bufio.NewScanner(os.Stdin)
스캐너로 stdin을 받습니다.
for scanner.Scan() {
입력을 라인 단위로 나누어 for문을 반복합니다.
if scanner.Text() == "!q" {
os.Exit(0)
}
만약 특정 문자열이 들어오면 프로그램을 종료하도록 작성합니다.
fmt.Println(strings.Contains(scanner.Text(), "hello"))
fmt.Println(strings.Count(scanner.Text(), "l"))
fmt.Println(strings.Index(scanner.Text(), "hello"))
fmt.Println(strings.Repeat(scanner.Text(), 3))
fmt.Println(strings.Split(scanner.Text(), ","))
fmt.Println(strings.ToUpper(scanner.Text()))
}
string 함수들을 사용하여 스캐너로 입력받은 문자열을 조작해줄 수 있습니다.
if err := scanner.Err(); err != nil {
os.Exit(1)
}
}
스캐너로 읽으면서 오류를 판별해줍니다.
Written on November 24, 2018