Функция io.ReadAll

Функция io.ReadAll читает все данные из io.Reader до тех пор, пока не встретит конец файла (EOF) или не произойдет ошибка. Она возвращает слайс байтов и ошибку. В качестве первого параметра функция принимает интерфейс io.Reader, из которого будет производиться чтение. Возвращает функция два значения: слайс байтов и ошибку. Если чтение прошло успешно, ошибка будет равна nil.

Синтаксис

goio.ReadAll(reader)

Пример

Давайте прочитаем все данные из строки, используя strings.Reader:

gopackage main

import (
  "io"
  "strings"
  "fmt"
)

func main() {
  str := "abcde"
  reader := strings.NewReader(str)

  res, err := io.ReadAll(reader)
  if err != nil {
    fmt.Println(err)
    return
  }

  fmt.Printf("res: %s\n", res)
}

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

go"res: abcde"

Пример

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

gopackage main

import (
  "io"
  "strings"
  "fmt"
)

func main() {
  reader := strings.NewReader("")

  res, err := io.ReadAll(reader)
  if err != nil {
    fmt.Println(err)
    return
  }

  fmt.Printf("res: %s, len: %d\n", res, len(res))
}

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

go"res: , len: 0"

Пример

Давайте прочитаем данные из файла с помощью os.Open:

gopackage main

import (
  "io"
  "os"
  "fmt"
)

func main() {
  file, err := os.Open("example.txt")
  if err != nil {
    fmt.Println(err)
    return
  }
  defer file.Close()

  res, err := io.ReadAll(file)
  if err != nil {
    fmt.Println(err)
    return
  }

  fmt.Printf("res: %s\n", res)
}

Результат выполнения кода (при условии, что файл содержит текст "hello world"):

go"res: hello world"

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

  • функцию io.ReadAtLeast,
    которая читает как минимум указанное количество байт
  • функцию io.ReadFull,
    которая читает ровно указанное количество байт
  • функцию io.Copy,
    которая копирует данные из ридера в райтер
  • функцию os.ReadFile,
    которая читает содержимое файла целиком