Функция 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 для чтения из строки