[go] bufio 패키지의 입출력 데이터 파싱 방법
Go 언어에서 입출력을 다루는 데 유용한 패키지 중 하나는 bufio
패키지입니다. bufio
패키지는 입력 스트림과 출력 스트림에 대한 버퍼링을 제공하며, 특히 데이터 파싱에 유용하게 활용될 수 있습니다.
이번 포스트에서는 bufio
패키지를 사용하여 입력 데이터를 파싱하고 필요한 형태로 가공하는 방법을 살펴보겠습니다.
1. 데이터 읽기
가장 먼저, bufio
패키지를 이용하여 파일 또는 표준 입력(stdin)에서 데이터를 읽어오겠습니다.
package main
import (
"bufio"
"fmt"
"os"
)
func main() {
file, err := os.Open("data.txt")
if err != nil {
panic(err)
}
defer file.Close()
scanner := bufio.NewScanner(file)
for scanner.Scan() {
line := scanner.Text()
// 데이터 처리 로직
fmt.Println(line)
}
if err := scanner.Err(); err != nil {
panic(err)
}
}
위 예제에서 bufio.NewScanner
함수를 이용하여 파일을 읽어오고, scanner.Scan()
을 이용하여 한 줄씩 데이터를 읽어옵니다.
2. 데이터 파싱
읽어들인 데이터를 파싱하여 필요한 형식으로 변환하는 작업이 필요합니다. 예를 들어 CSV 형식의 데이터를 파싱해보겠습니다.
package main
import (
"bufio"
"encoding/csv"
"fmt"
"os"
"strings"
)
func main() {
file, err := os.Open("data.csv")
if err != nil {
panic(err)
}
defer file.Close()
reader := csv.NewReader(bufio.NewReader(file))
for {
line, err := reader.Read()
if err != nil {
break
}
// CSV 데이터 처리 로직
fmt.Println(line)
}
}
위 예제에서는 encoding/csv
패키지와 bufio
패키지를 함께 사용하여 CSV 파일을 파싱하고 각 라인을 배열로 가져옵니다.
3. 결과
bufio
패키지의 도움을 받아 데이터를 읽어오고 파싱하는 방법에 대해 알아보았습니다. bufio
패키지를 활용하여 데이터를 효율적으로 처리하고 필요한 형식으로 변환할 수 있습니다.
더 많은 bufio
패키지의 활용 방법은 공식 문서를 참고하시기 바랍니다.
Happy coding! 🚀