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

Функция bytes.NewReader

Функция bytes.NewReader создает новый Reader, который читает данные из переданного байтового среза. В единственный параметр функция принимает байтовый срез []byte, из которого будет производиться чтение. Возвращаемое значение - указатель на структуру bytes.Reader, реализующую интерфейсы io.Reader, io.Seeker и io.ReaderAt.

Синтаксис

func NewReader(b []byte) *Reader

Пример

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

package main import ( "bytes" "fmt" "io" ) func main() { data := []byte("Hello, Go!") reader := bytes.NewReader(data) buf := make([]byte, len(data)) n, err := reader.Read(buf) if err != nil && err != io.EOF { fmt.Println("Error:", err) return } fmt.Printf("Read %d bytes: %s\n", n, string(buf)) }

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

"Read 10 bytes: Hello, Go!"

Пример

Создадим Reader и прочитаем данные по частям, используя метод Read:

package main import ( "bytes" "fmt" "io" ) func main() { data := []byte("1234567890") reader := bytes.NewReader(data) buf := make([]byte, 3) for { n, err := reader.Read(buf) if err == io.EOF { break } if err != nil { fmt.Println("Error:", err) return } fmt.Printf("Read: %s\n", string(buf[:n])) } }

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

"Read: 123" "Read: 456" "Read: 789" "Read: 0"

Пример

Используем методы Seek и Read для чтения с определенной позиции:

package main import ( "bytes" "fmt" "io" ) func main() { data := []byte("abcdefghij") reader := bytes.NewReader(data) // Перемещаем указатель на 3 байта от начала _, err := reader.Seek(3, io.SeekStart) if err != nil { fmt.Println("Error:", err) return } buf := make([]byte, 4) n, err := reader.Read(buf) if err != nil && err != io.EOF { fmt.Println("Error:", err) return } fmt.Printf("Read from position 3: %s\n", string(buf[:n])) }

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

"Read from position 3: defg"

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

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