Функция strings.NewReader
Функция strings.NewReader создает новый объект strings.Reader,
который позволяет читать данные из переданной строки. Она принимает один параметр -
строку, из которой будет производиться чтение. Возвращаемый объект реализует
интерфейс io.Reader, что позволяет использовать его в функциях,
работающих с потоками данных, например, при чтении из HTTP-запросов или
при работе с файлами.
Синтаксис
strings.NewReader(str)
Пример
Давайте создадим Reader из строки "abcde" и прочитаем данные из него:
package 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))
}
Результат выполнения кода:
"Read 5 bytes: abcde"
Пример
Давайте прочитаем строку по частям, используя метод Read:
package 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
}
}
}
Результат выполнения кода:
"Read: 12"
"Read: 34"
"Read: 5"
Пример
Функция strings.NewReader позволяет читать данные с определенной позиции,
используя метод Seek:
package 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]))
}
Результат выполнения кода:
"Read from position 2: cde"
Смотрите также
-
тип данных
strings.Reader,
который реализует чтение из строки -
функцию
bytes.NewReader,
которая создает Reader для чтения из слайса байт -
функцию
strings.Builder,
которая используется для эффективной сборки строк -
интерфейс
io.Reader,
который реализуетstrings.Reader