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

Метод bufio.Reader.Discard

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

Синтаксис

n, err := reader.Discard(n int) (int, error)

Пример

Давайте создадим буферизованный ридер и пропустим первые 5 байт из строки:

package main import ( "bufio" "fmt" "strings" ) func main() { s := "Hello, World!" reader := bufio.NewReader(strings.NewReader(s)) n, err := reader.Discard(5) if err != nil { fmt.Println(err) return } fmt.Printf("Пропущено байт: %d\n", n) rest, _ := reader.ReadString('\n') fmt.Printf(rest) }

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

"Пропущено байт: 5" ", World!"

Пример

Давайте попробуем пропустить больше байт, чем содержится в потоке, и посмотрим на ошибку:

package main import ( "bufio" "fmt" "strings" ) func main() { s := "abcde" reader := bufio.NewReader(strings.NewReader(s)) n, err := reader.Discard(10) if err != nil { fmt.Printf("Ошибка: %v\n", err) fmt.Printf("Пропущено байт: %d\n", n) return } fmt.Printf("Пропущено байт: %d\n", n) }

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

"Ошибка: EOF" "Пропущено байт: 5"

Пример

Метод Discard часто используется для пропуска заголовков или метаданных в потоке данных:

package main import ( "bufio" "fmt" "strings" ) func main() { data := "HEADER: metadata\nbody content" reader := bufio.NewReader(strings.NewReader(data)) // Пропускаем все символы до первой новой строки line, _ := reader.ReadString('\n') fmt.Printf("Заголовок: %s", line) // Пропускаем следующий байт (перевод строки) reader.Discard(1) // Читаем тело body, _ := reader.ReadString('\n') fmt.Printf(body) }

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

"Заголовок: HEADER: metadata" "body content"

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

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