[go] bufio 패키지의 사용법

Go 언어의 bufio 패키지는 입력 및 출력 작업을 위한 버퍼링 기능을 제공합니다. 이를 통해 입출력 작업의 성능을 향상시키고, 더 효율적인 데이터 처리를 할 수 있습니다.

bufio 패키지의 주요 기능

bufio 패키지는 다음과 같은 주요 기능을 제공합니다.

1. 버퍼링을 통한 입출력 최적화

bufio 패키지는 버퍼링을 통해 입출력 작업의 효율을 높일 수 있습니다. 작은 블록으로 나뉘어진 데이터를 읽거나 쓸 때, 시스템 콜의 횟수를 줄여 성능을 개선할 수 있습니다.

2. Scanner를 이용한 편리한 데이터 읽기

bufio.Scanner를 사용하면 텍스트 기반의 입력에서 라인 단위로 데이터를 쉽게 읽을 수 있습니다. 이를 통해 파일이나 표준 입력에서 편리하게 데이터를 처리할 수 있습니다.

3. 효율적인 쓰기 작업

bufio.Writer를 사용하면 작은 블록으로 나뉘어진 데이터를 효율적으로 쓸 수 있습니다. 데이터가 버퍼에 차면 flush를 호출하여 실제 디스크나 네트워크에 쓸 수 있습니다.

bufio를 이용한 예제

다음은 bufio 패키지를 사용하여 파일을 읽고 쓰는 간단한 예제 코드입니다.

package main

import (
	"bufio"
	"fmt"
	"os"
)

func main() {
	// 파일 열기
	file, err := os.Open("input.txt")
	if err != nil {
		panic(err)
	}
	defer file.Close()

	// bufio.Scanner를 이용한 텍스트 읽기
	scanner := bufio.NewScanner(file)
	for scanner.Scan() {
		fmt.Println(scanner.Text())
	}
	if err := scanner.Err(); err != nil {
		panic(err)
	}

	// bufio.Writer를 이용한 텍스트 쓰기
	outputFile, err := os.Create("output.txt")
	if err != nil {
		panic(err)
	}
	defer outputFile.Close()

	writer := bufio.NewWriter(outputFile)
	_, err = writer.WriteString("Hello, bufio!\n")
	if err != nil {
		panic(err)
	}
	writer.Flush()
}

위의 예제는 bufio.Scanner를 사용하여 파일에서 텍스트를 읽고, bufio.Writer를 사용하여 텍스트를 파일에 쓰는 방법을 보여줍니다.

bufio 패키지를 사용하면 입출력 작업을 효율적으로 처리할 수 있으며, 텍스트 데이터를 라인 단위로 읽거나 쓰는 작업을 간편하게 수행할 수 있습니다.

더 많은 정보는 공식 문서를 참고하세요.