[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! 🚀