Функция bufio.NewReader
Функция bufio.NewReader создает новый объект Reader, который использует буфер для чтения данных из указанного источника. В качестве единственного параметра она принимает интерфейс io.Reader, например, файл или сетевое соединение. Буферизация позволяет уменьшить количество системных вызовов и ускорить чтение данных.
Синтаксис
bufio.NewReader(rd io.Reader) *bufio.Reader
Пример
Давайте создадим буферизированный читатель для чтения строк из стандартного ввода:
package main
import (
"bufio"
"fmt"
"os"
)
func main() {
reader := bufio.NewReader(os.Stdin)
fmt.Print("Enter text: ")
text, _ := reader.ReadString('\n')
fmt.Println("You entered:", text)
}
Результат выполнения кода при вводе пользователем "hello world":
"Enter text: hello world"
"You entered: hello world\n"
Пример
Давайте используем bufio.NewReader для чтения данных из строки с помощью strings.NewReader:
package main
import (
"bufio"
"fmt"
"strings"
)
func main() {
data := "abcde\nfghij\nklmno"
reader := bufio.NewReader(strings.NewReader(data))
line, err := reader.ReadString('\n')
fmt.Printf("Line 1: %q", line)
line, err = reader.ReadString('\n')
fmt.Printf("Line 2: %q", line)
remaining, _ := reader.ReadString('\n')
fmt.Printf("Remaining: %q", remaining)
}
Результат выполнения кода:
"Line 1: \"abcde\\n\""
"Line 2: \"fghij\\n\""
"Remaining: \"klmno\""
Пример
Давайте используем метод Peek для просмотра данных без их извлечения:
package main
import (
"bufio"
"fmt"
"strings"
)
func main() {
reader := bufio.NewReader(strings.NewReader("abcde"))
peeked, _ := reader.Peek(3)
fmt.Println("Peeked:", string(peeked))
read, _ := reader.ReadByte()
fmt.Println("Read:", string(read))
}
Результат выполнения кода:
"Peeked: abc"
"Read: a"
Смотрите также
-
функцию
bufio.NewReaderSize,
которая создает буферизированный читатель с указанным размером буфера -
функцию
bufio.NewScanner,
которая создает сканер для построчного чтения данных -
функцию
bufio.NewWriter,
которая создает буферизированный писатель для эффективной записи данных -
метод
bufio.Reader.ReadString,
который читает строку до указанного разделителя