카테고리 없음

[Go언어] bufio 패키지

코드베어 2022. 11. 19. 11:07

bufio 패키지는 buffered I/O를 구현하며 io.Reader, io.Writer 객체를 래핑한다. bufio를 사용하면 버퍼를 활용해 I/O의 부하를 줄일 수 있다. 

 

bufio.NewReader 함수를 이용해 파일이나 표준입력스트림 등에서 defaultBufSize만큼 읽어올 수 있다.

func NewReader(rd io.Reader) *Reader {
	return NewReaderSize(rd, defaultBufSize)
}

ex)
func ReadFile(filename string) (string, error) {
    file, err := os.Open(filename)
    if err != nil {
        return "", err
    }
    defer file.Close()
    rd := bufio.NewReader(file)
    line, _ := rd.ReadString('\n')
    return line, nil
}

func ReadStandardStream()(string, error) {
    r := bufio.NewReader(os.Stdin)
    s, err := r.ReadString('\n')
    return s, err
}

 

bufio.NewScanner 함수를 이용해 파일이나 표준입력 스트림에서 문자를 읽고 변수에 저장할 수 있다.

// NewScanner returns a new Scanner to read from r.
// The split function defaults to ScanLines.
func NewScanner(r io.Reader) *Scanner {
	return &Scanner{
		r:            r,
		split:        ScanLines,
		maxTokenSize: MaxScanTokenSize,
	}
}

ex)
func main() {
    sc := bufio.NewScanner(os.Stdin)
    sc.Scan()	// 스트림에서 한줄 읽어옴 
    fmt.Println(sc.Text()) // 읽어온 문자열 출력
}

 

위 내용은 bufio 패키지의 기본기능만 소개한 것이고 다음 사이트에서 더 자세한 함수설명이나 활용을 확인할 수 있다.

https://pkg.go.dev/bufio