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

Метод bufio.Reader.Read

Метод bufio.Reader.Read считывает данные из буферизованного ридера и помещает их в переданный байтовый слайс. В первый параметр метод принимает байтовый слайс []byte, в который будут записаны прочитанные данные. Метод возвращает количество прочитанных байт int и ошибку error. При достижении конца данных возвращается ошибка io.EOF.

Синтаксис

n, err := r.Read(p []byte)

Пример

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

package main import ( "bufio" "fmt" "strings" ) func main() { s := "abcde" r := bufio.NewReader(strings.NewReader(s)) buf := make([]byte, 3) n, err := r.Read(buf) fmt.Printf("Read %d bytes: %q\n", n, buf[:n]) if err != nil { fmt.Printf("Error: %v\n", err) } }

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

Read 3 bytes: "abc"

Пример

Прочитаем данные из ридера в несколько вызовов метода Read, пока не достигнем конца данных:

package main import ( "bufio" "fmt" "io" "strings" ) func main() { s := "12345" r := bufio.NewReader(strings.NewReader(s)) buf := make([]byte, 2) for { n, err := r.Read(buf) if err != nil { if err == io.EOF { fmt.Println("End of data reached") break } fmt.Printf("Error: %v\n", err) break } fmt.Printf("Read %d bytes: %q\n", n, buf[:n]) } }

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

Read 2 bytes: "12" Read 2 bytes: "34" Read 1 bytes: "5" End of data reached

Пример

Пример чтения данных из файла с использованием метода Read:

package main import ( "bufio" "fmt" "os" ) func main() { file, err := os.Open("file.txt") if err != nil { fmt.Printf("Error opening file: %v\n", err) return } defer file.Close() r := bufio.NewReader(file) buf := make([]byte, 10) for { n, err := r.Read(buf) if n > 0 { fmt.Print(string(buf[:n])) } if err != nil { break } } }

В этом примере мы открываем файл, создаем буферизованный ридер и читаем данные порциями по 10 байт до тех пор, пока не встретим ошибку (обычно это io.EOF).

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

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