РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
701 of 1593 menu

Метод bufio.Reader.Buffered

Метод bufio.Reader.Buffered возвращает количество байт, которые в данный момент находятся во внутреннем буфере читателя и готовы к чтению без обращения к нижележащему источнику данных. Этот метод не требует передачи параметров и возвращает значение типа int, равное количеству байт в буфере.

Синтаксис

reader.Buffered()

Метод возвращает количество непрочитанных байт в буфере. Если в буфере нет данных, возвращается 0.

Пример

Создадим буферизированный читатель из строки и прочитаем из нее несколько байт, после чего проверим, сколько байт осталось в буфере:

package main import ( "bufio" "fmt" "strings" ) func main() { str := "Hello, World!" reader := bufio.NewReader(strings.NewReader(str)) b := make([]byte, 5) reader.Read(b) buffered := reader.Buffered() fmt.Println(buffered) }

Результат выполнения кода:

8

В исходной строке "Hello, World!" содержится 13 байт. После чтения 5 байт (символы "Hello") в буфере осталось 8 байт, что и было возвращено методом.

Пример

Рассмотрим ситуацию, когда буфер пуст. Если мы прочитаем все данные из буфера, то метод вернет 0:

package main import ( "bufio" "fmt" "strings" ) func main() { str := "abcde" reader := bufio.NewReader(strings.NewReader(str)) buffered := reader.Buffered() fmt.Println(buffered) b := make([]byte, 10) reader.Read(b) bufferedAfter := reader.Buffered() fmt.Println(bufferedAfter) }

Результат выполнения кода:

5 0

Изначально в буфере находится вся строка "abcde" длиной 5 байт. После чтения всех данных буфер становится пустым, и метод возвращает 0.

Пример

Метод Buffered может быть полезен при работе с буферизированным чтением для контроля состояния буфера, например, для проверки наличия данных перед чтением:

package main import ( "bufio" "fmt" "strings" ) func main() { str := "12345" reader := bufio.NewReader(strings.NewReader(str)) for reader.Buffered() > 0 { b := make([]byte, 2) n, _ := reader.Read(b) fmt.Printf("Прочитано %d байт: %s\n", n, b[:n]) fmt.Printf("Осталось в буфере: %d\n", reader.Buffered()) } }

Результат выполнения кода:

"Прочитано 2 байт: 12" "Осталось в буфере: 3" "Прочитано 2 байт: 34" "Осталось в буфере: 1" "Прочитано 1 байт: 5" "Осталось в буфере: 0"

Смотрите также

  • метод bufio.Reader.Peek,
    который позволяет просмотреть данные в буфере без их чтения
  • метод bufio.Reader.Discard,
    который позволяет пропустить указанное количество байт из буфера
  • метод bufio.Reader.ReadString,
    который читает данные до разделителя
  • метод bufio.Writer.Available,
    который возвращает количество свободного места в буфере записи
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить