Функция strings.NewReader

Функция strings.NewReader создает новый объект strings.Reader, который позволяет читать данные из переданной строки. Она принимает один параметр - строку, из которой будет производиться чтение. Возвращаемый объект реализует интерфейс io.Reader, что позволяет использовать его в функциях, работающих с потоками данных, например, при чтении из HTTP-запросов или при работе с файлами.

Синтаксис

gostrings.NewReader(str)

Пример

Давайте создадим Reader из строки "abcde" и прочитаем данные из него:

gopackage main

import (
  "fmt"
  "strings"
)

func main() {
  reader := strings.NewReader("abcde")
  buf := make([]byte, 5)
  n, err := reader.Read(buf)
  if err != nil {
    fmt.Println("Error:", err)
    return
  }
  fmt.Printf("Read %d bytes: %s\n", n, string(buf))
}

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

go"Read 5 bytes: abcde"

Пример

Давайте прочитаем строку по частям, используя метод Read:

gopackage main

import (
  "fmt"
  "strings"
)

func main() {
  reader := strings.NewReader("12345")
  buf := make([]byte, 2)

  for {
    n, err := reader.Read(buf)
    if n > 0 {
      fmt.Printf("Read: %s\n", string(buf[:n]))
    }
    if err != nil {
      break
    }
  }
}

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

go"Read: 12"
"Read: 34"
"Read: 5"

Пример

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

gopackage main

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

func main() {
  reader := strings.NewReader("abcde")
  reader.Seek(2, io.SeekStart)

  buf := make([]byte, 3)
  n, _ := reader.Read(buf)
  fmt.Printf("Read from position 2: %s\n", string(buf[:n]))
}

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

go"Read from position 2: cde"

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

  • тип данных strings.Reader,
    который реализует чтение из строки
  • функцию bytes.NewReader,
    которая создает Reader для чтения из слайса байт
  • функцию strings.Builder,
    которая используется для эффективной сборки строк
  • интерфейс io.Reader,
    который реализует strings.Reader