Метод bytes.Buffer.Read

Метод bytes.Buffer.Read читает данные из буфера и записывает их в переданный срез байт. В качестве параметра метод принимает срез байт, в который будут скопированы данные из буфера. Метод возвращает количество прочитанных байт и ошибку типа error. Если буфер пуст, метод возвращает (0, io.EOF). Если переданный срез имеет нулевую длину, чтение не производится и возвращается (0, nil). Метод читает данные до заполнения среза или до опустошения буфера.

Синтаксис

gobuffer.Read(p []byte) (n int, err error)

Пример

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

gopackage main

import (
  "bytes"
  "fmt"
)

func main() {
  buffer := bytes.NewBufferString("Hello")
  slice := make([]byte, 3)

  n, err := buffer.Read(slice)
  if err != nil {
    fmt.Println("Error:", err)
    return
  }

  fmt.Printf("Read %d bytes: %s\n", n, slice)
  fmt.Printf("Remaining in buffer: %s\n", buffer.String())
}

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

go"Read 3 bytes: Hel"
"Remaining in buffer: lo"

Пример

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

gopackage main

import (
  "bytes"
  "fmt"
  "io"
)

func main() {
  buffer := bytes.NewBufferString("")
  slice := make([]byte, 5)

  n, err := buffer.Read(slice)
  if err != nil {
    fmt.Printf("Error: %v\n", err)
    return
  }

  fmt.Printf("Read %d bytes\n", n)
}

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

go"Error: EOF"

Пример

Прочитаем данные из буфера в срез, размер которого превышает содержимое буфера:

gopackage main

import (
  "bytes"
  "fmt"
)

func main() {
  buffer := bytes.NewBufferString("12345")
  slice := make([]byte, 10)

  n, err := buffer.Read(slice)
  if err != nil {
    fmt.Println("Error:", err)
    return
  }

  fmt.Printf("Read %d bytes: %s\n", n, slice[:n])
}

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

go"Read 5 bytes: 12345"

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

  • метод bytes.Buffer.WriteString,
    который записывает строку в буфер
  • метод bytes.Buffer.Bytes,
    который возвращает содержимое буфера в виде среза байт
  • метод bytes.Buffer.String,
    который возвращает содержимое буфера в виде строки
  • функцию strings.NewReader,
    которая создает читателя для строки