[go] bufio 패키지 사용 시 주의할 점

Go 언어에서 파일을 읽거나 쓸 때 bufio 패키지는 성능을 향상시키고 사용이 간편하도록 도와줍니다. 하지만 사용할 때 몇 가지 주의할 점이 있습니다.

버퍼 크기 조절

bufio 패키지를 사용할 때 가장 주의해야 할 점은 버퍼 크기를 적절히 조절하는 것입니다. 충분히 큰 버퍼를 사용하면 I/O 작업이 효율적으로 처리되지만, 너무 큰 버퍼를 사용하면 메모리 소비가 늘어나고 성능에 오히려 악영향을 줄 수 있습니다.

예를 들어, 파일을 한 번에 읽어서 처리하는 경우라면 큰 버퍼를 사용하는 것이 좋겠지만, 반대로 한 번에 작은 양의 데이터만을 읽어야 하는 경우에는 작은 버퍼를 사용하는 것이 효율적일 수 있습니다.

Flush 호출

bufio.Writer를 사용하여 파일에 쓰기 작업을 수행할 때는 Flush 함수를 호출하여 버퍼에 남아 있는 데이터를 파일에 쓰도록 해야 합니다. Flush 호출을 잊어버리면 파일에 데이터가 제대로 쓰이지 않을 수 있습니다.

올바른 에러 처리

bufio 패키지를 사용할 때는 항상 에러를 올바르게 처리해야 합니다. 버퍼에 데이터를 쓸 때나 읽을 때 발생하는 에러를 놓치지 말고 처리해야 합니다.

bufio 패키지를 사용할 때 이러한 주의사항을 명심한다면 안정적이고 효율적인 파일 I/O 작업을 수행할 수 있습니다.

공식 bufio 패키지 문서

package main

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

func main() {
	file, err := os.Create("test.txt")
	if err != nil {
		panic(err)
	}
	defer file.Close()

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

위의 예제에서는 bufio.Writer를 사용하여 파일에 문자열을 쓰고 있습니다. Flush 함수를 호출하여 버퍼에 남아 있는 데이터를 파일에 쓰도록 하고 있으며, 에러도 적절히 처리하고 있습니다.