Метод bufio.Reader.ReadString
Метод bufio.Reader.ReadString читает данные из буферизованного ридера
до тех пор, пока не встретит указанный разделитель, и возвращает прочитанные
данные в виде строки, включая сам разделитель. Метод принимает один параметр
delim - байт, который служит разделителем. Если разделитель не найден
до конца потока, метод возвращает все доступные данные и ошибку
io.EOF. Метод полезен для построчного чтения данных из файлов,
сетевых соединений или других потоков ввода.
Синтаксис
str, err := reader.ReadString(delim)
Пример
Давайте прочитаем строку из буферизованного ридера до символа новой строки:
package main
import (
"bufio"
"fmt"
"strings"
)
func main() {
input := "Hello, World!\nThis is a test"
reader := bufio.NewReader(strings.NewReader(input))
res, err := reader.ReadString('\n')
if err != nil {
fmt.Printf("error: %v", err)
}
fmt.Println(res)
}
Результат выполнения кода:
"Hello, World!\n"
Пример
Давайте прочитаем строку до разделителя-запятой:
package main
import (
"bufio"
"fmt"
"strings"
)
func main() {
input := "apple,banana,cherry"
reader := bufio.NewReader(strings.NewReader(input))
res, err := reader.ReadString(',')
if err != nil {
fmt.Printf("error: %v", err)
}
fmt.Println(res)
}
Результат выполнения кода:
"apple,"
Пример
Прочитаем все данные из потока до конца, когда разделитель отсутствует:
package main
import (
"bufio"
"fmt"
"strings"
)
func main() {
input := "no delimiter here"
reader := bufio.NewReader(strings.NewReader(input))
res, err := reader.ReadString('.')
if err != nil {
fmt.Printf("error: %v\n", err)
}
fmt.Println(res)
}
Результат выполнения кода:
"no delimiter here"
Пример
Прочитаем все строки из многострочного текста в цикле:
package main
import (
"bufio"
"fmt"
"strings"
)
func main() {
input := "line1\nline2\nline3\n"
reader := bufio.NewReader(strings.NewReader(input))
for {
res, err := reader.ReadString('\n')
if err != nil {
break
}
fmt.Print(res)
}
}
Результат выполнения кода:
"line1\n"
"line2\n"
"line3\n"
Смотрите также
-
метод
bufio.Reader.ReadBytes,
который возвращает прочитанные данные в виде среза байт -
метод
bufio.Reader.ReadLine,
который предоставляет низкоуровневое построчное чтение -
метод
bufio.Reader.ReadByte,
который читает и возвращает один байт -
метод
bufio.Reader.ReadRune,
который читает один рунический символ