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

Функция io.MultiReader

Функция io.MultiReader создает составной ридер, который последовательно читает данные из переданных ридеров. Первым параметром функция принимает список ридеров, которые нужно объединить. Возвращает она новый ридер, который читает из первого ридера до его конца, затем из второго и так далее.

Синтаксис

io.MultiReader(readers ...io.Reader) io.Reader

Пример

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

package main import ( "io" "strings" "fmt" ) func main() { r1 := strings.NewReader("Hello, ") r2 := strings.NewReader("World!") mr := io.MultiReader(r1, r2) data, err := io.ReadAll(mr) if err != nil { fmt.Println(err) return } fmt.Println(string(data)) }

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

"Hello, World!"

Пример

Давайте объединим несколько байтовых ридеров и прочитаем из них:

package main import ( "bytes" "io" "fmt" ) func main() { r1 := bytes.NewReader([]byte("abcde")) r2 := bytes.NewReader([]byte("12345")) r3 := bytes.NewReader([]byte("fghij")) mr := io.MultiReader(r1, r2, r3) data := make([]byte, 15) n, err := mr.Read(data) if err != nil { fmt.Println(err) return } fmt.Println(string(data[:n])) }

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

"abcde12345fghij"

Пример

Давайте объединим ридеры и прочитаем их по частям:

package main import ( "io" "strings" "fmt" ) func main() { r1 := strings.NewReader("abcde") r2 := strings.NewReader("12345") mr := io.MultiReader(r1, r2) buf := make([]byte, 3) for { n, err := mr.Read(buf) if err == io.EOF { break } if err != nil { fmt.Println(err) return } fmt.Print(string(buf[:n])) } }

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

"abcde12345"

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

  • функцию io.MultiWriter,
    которая объединяет несколько писателей в один
  • функцию io.ReadAll,
    которая читает все данные из ридера до конца
  • функцию io.LimitReader,
    которая ограничивает количество читаемых данных
  • функцию io.TeeReader,
    которая дублирует данные при чтении
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить