Функция io.ReadAll
Функция io.ReadAll читает все данные из io.Reader
до тех пор, пока не встретит конец файла (EOF) или не произойдет
ошибка. Она возвращает слайс байтов и ошибку. В качестве первого
параметра функция принимает интерфейс io.Reader, из которого
будет производиться чтение. Возвращает функция два значения:
слайс байтов и ошибку. Если чтение прошло успешно, ошибка будет
равна nil.
Синтаксис
io.ReadAll(reader)
Пример
Давайте прочитаем все данные из строки, используя strings.Reader:
package 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)
}
Результат выполнения кода:
"res: abcde"
Пример
Давайте прочитаем данные из пустого ридера:
package 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))
}
Результат выполнения кода:
"res: , len: 0"
Пример
Давайте прочитаем данные из файла с помощью os.Open:
package 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"):
"res: hello world"
Смотрите также
-
функцию
io.ReadAtLeast,
которая читает как минимум указанное количество байт -
функцию
io.ReadFull,
которая читает ровно указанное количество байт -
функцию
io.Copy,
которая копирует данные из ридера в райтер -
функцию
os.ReadFile,
которая читает содержимое файла целиком