Функция bufio.NewReaderSize
Функция bufio.NewReaderSize создает новый объект bufio.Reader,
который выполняет буферизированное чтение данных из переданного
интерфейса io.Reader. В первый параметр мы передаем источник
данных (например, файл или сетевого соединение), во второй параметр
мы передаем размер буфера в байтах, который будет использоваться
для чтения. Если размер буфера меньше минимального значения,
функция автоматически устанавливает минимально допустимый размер.
Синтаксис
bufio.NewReaderSize(rd io.Reader, size int) *bufio.Reader
Пример
Давайте создадим буферизированный ридер с буфером 64 байта и прочитаем первую строку из строки:
package main
import (
"bufio"
"fmt"
"strings"
)
func main() {
s := "abcde\n12345"
r := strings.NewReader(s)
br := bufio.NewReaderSize(r, 64)
line, err := br.ReadString('\n')
if err != nil {
fmt.Println("Error:", err)
return
}
fmt.Println(line)
}
Результат выполнения кода:
"abcde\n"
Пример
Давайте создадим ридер с маленьким буфером в 8 байт и прочитаем длинную строку по частям:
package main
import (
"bufio"
"fmt"
"strings"
)
func main() {
s := "1234567890abcdefghijklmnopqrstuvwxyz"
r := strings.NewReader(s)
br := bufio.NewReaderSize(r, 8)
buf := make([]byte, 5)
for {
n, err := br.Read(buf)
if n > 0 {
fmt.Print(string(buf[:n]))
}
if err != nil {
fmt.Println()
break
}
}
}
Результат выполнения кода:
"1234567890abcdefghijklmnopqrstuvwxyz"
Пример
Давайте создадим ридер с размером буфера 10 байт
и используем метод Peek для просмотра данных без их чтения:
package main
import (
"bufio"
"fmt"
"strings"
)
func main() {
s := "abcde12345"
r := strings.NewReader(s)
br := bufio.NewReaderSize(r, 10)
data, err := br.Peek(5)
if err != nil {
fmt.Println("Error:", err)
return
}
fmt.Println(string(data))
data, err = br.Peek(8)
if err != nil {
fmt.Println("Error:", err)
return
}
fmt.Println(string(data))
}
Результат выполнения кода:
"abcde"
"abcde123"
Смотрите также
-
функцию
bufio.NewReader,
которая создает ридер с размером буфера по умолчанию -
функцию
bufio.NewWriterSize,
которая создает буферизированный писатель с заданным размером буфера -
функцию
bufio.Reader.ReadString,
которая читает строку до указанного разделителя -
функцию
bufio.Reader.Peek,
которая позволяет заглянуть в буфер без извлечения данных