===== bufio package ===== ==== What is it? ==== `bufio` implements **buffered I/O** by wrapping an `io.Reader` or `io.Writer` and using an in-memory buffer to make reading/writing more efficient. ==== What is it used for? ==== * Faster reading/writing for files and network connections. * Convenient scanning of lines/tokens (`bufio.Scanner`). * Convenient line-based reads (`ReadString`, `ReadBytes`). ==== Common types ==== * `bufio.Reader`: buffered reader * `bufio.Writer`: buffered writer * `bufio.Scanner`: token/line scanner ==== Example: buffered reading (lines) ==== r := bufio.NewReader(f) line, err := r.ReadString('\n') _ = line _ = err ==== Example: buffered writing ==== w := bufio.NewWriter(f) _, _ = w.WriteString("hello\n") _ = w.Flush() ==== Notes / pitfalls ==== * Always call `Flush()` on `bufio.Writer` to ensure data is written. * `Scanner` has a token size limit by default; for big lines, configure buffer or use `Reader`. ==== Related pages ==== * [[go:stdlib:io|io package]] * [[go:stdlib:os_open|os.Open]] * [[go:stdlib:net_dial|net.Dial]] ==== Hard words (English) ==== * **buffer** /ˈbʌfər/: bộ đệm * **wrap** /ræp/: bọc * **efficient** /ɪˈfɪʃənt/: hiệu quả * **flush** /flʌʃ/: đẩy hết dữ liệu trong buffer ra nơi ghi * **token** /ˈtoʊkən/: đơn vị tách (mảnh dữ liệu)