Go의 bufio 패키지는 입출력 작업을 더 효율적으로 처리할 수 있는 기능을 제공합니다. 이를 사용하여 파이프를 통한 데이터의 읽기와 쓰기 작업을 보다 쉽게 처리할 수 있습니다. 이번 글에서는 bufio 패키지를 사용하여 입출력 파이프를 처리하는 방법에 대해 알아보겠습니다.
bufio 패키지 개요
bufio 패키지는 버퍼링된 입출력 작업을 지원하는 패키지로, 파일, 네트워크 연결, 표준 입력/출력 등의 다양한 소스로부터 데이터를 효율적으로 읽고 쓸 수 있도록 도와줍니다. 버퍼링은 입출력 데이터를 묶어서 처리함으로써 작업 효율을 높이는데 사용됩니다.
bufio를 이용한 파이프 처리 예제
다음은 bufio 패키지를 사용하여 입출력 파이프를 처리하는 간단한 예제 코드입니다.
package main
import (
"bufio"
"fmt"
"os"
)
func main() {
in := bufio.NewReader(os.Stdin)
out := bufio.NewWriter(os.Stdout)
for {
input, err := in.ReadString('\n')
if err != nil {
break
}
out.WriteString("Input: " + input)
out.Flush()
}
}
위 예제에서는 bufio 패키지의 NewReader
와 NewWriter
함수를 사용하여 표준 입력과 출력을 처리합니다. NewReader
함수를 통해 입력을 버퍼링하고, ReadString
메서드를 사용하여 개행 문자가 나올 때까지 데이터를 읽어옵니다. 그리고 NewWriter
함수를 통해 출력을 버퍼링한 후, WriteString
메서드를 사용하여 읽은 데이터에 “Input: “을 추가하여 표준 출력으로 쓰여집니다.
결론
위 예제를 통해 bufio 패키지를 사용하여 입출력 파이프를 효율적으로 처리하는 방법에 대해 알아보았습니다. bufio 패키지를 사용하면 입출력 데이터를 효율적으로 처리할 수 있으며, 대용량 데이터의 처리나 네트워크 통신에서 유용하게 활용될 수 있습니다. Go 언어에서 입출력 작업을 처리할 때는 bufio 패키지의 활용을 고려해보시기 바랍니다.
참고 자료
- Go 언어 공식 문서: https://golang.org/pkg/bufio/
- “Learning Go Programming” by Vladimir Vivien, Miki Tebeka, and John Daniel Leon: https://www.amazon.com/Learning-Go-Programming-Vladimir-Vivien/dp/1784395434
- “The Go Programming Language” by Alan A. A. Donovan and Brian W. Kernighan: https://www.gopl.io/