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

Тип bytes.Reader

Тип bytes.Reader реализует интерфейсы io.Reader, io.ReaderAt, io.WriterTo, io.Seeker, io.ByteReader и io.RuneReader. Он создается с помощью функции bytes.NewReader, которая принимает срез байтов и возвращает указатель на bytes.Reader.

Основное назначение типа — предоставить возможность читать данные из строки (преобразованной в байтовый срез) как из потока. Это удобно, когда требуется посимвольное или поблочное чтение, а также перемещение позиции чтения.

Синтаксис

r := bytes.NewReader([]byte("some string"))

Пример

Давайте создадим bytes.Reader из строки и прочитаем из него данные в байтовый срез:

package main import ( "bytes" "fmt" ) func main() { data := []byte("abcde") r := bytes.NewReader(data) buf := make([]byte, 3) n, err := r.Read(buf) if err != nil { fmt.Println("Error:", err) return } fmt.Printf("Read %d bytes: %s\n", n, buf[:n]) }

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

"Read 3 bytes: abc"

Пример

Давайте используем метод Seek для перемещения позиции чтения в середину строки и прочитаем остаток:

package main import ( "bytes" "fmt" "io" ) func main() { data := []byte("abcde") r := bytes.NewReader(data) // Перемещаем позицию на 2 байта от начала _, err := r.Seek(2, io.SeekStart) if err != nil { fmt.Println("Error:", err) return } buf := make([]byte, 3) n, err := r.Read(buf) if err != nil { fmt.Println("Error:", err) return } fmt.Printf("Read %d bytes: %s\n", n, buf[:n]) }

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

"Read 3 bytes: cde"

Пример

Давайте прочитаем всю строку целиком с помощью метода ReadAll из пакета io, используя bytes.Reader как источник:

package main import ( "bytes" "fmt" "io" ) func main() { data := []byte("abcde") r := bytes.NewReader(data) res, err := io.ReadAll(r) if err != nil { fmt.Println("Error:", err) return } fmt.Printf("%s\n", res) }

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

"abcde"

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

  • тип bytes.Buffer,
    который используется для накопления данных в буфере
  • функцию bytes.NewReader,
    которая создает новый bytes.Reader из среза байтов
  • тип strings.Reader,
    который предоставляет аналогичную функциональность для строк
  • функцию bytes.Clone,
    которая создает копию среза байтов
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить