Функция bufio.NewReader

Функция bufio.NewReader создает новый объект Reader, который использует буфер для чтения данных из указанного источника. В качестве единственного параметра она принимает интерфейс io.Reader, например, файл или сетевое соединение. Буферизация позволяет уменьшить количество системных вызовов и ускорить чтение данных.

Синтаксис

gobufio.NewReader(rd io.Reader) *bufio.Reader

Пример

Давайте создадим буферизированный читатель для чтения строк из стандартного ввода:

gopackage main

import (
  "bufio"
  "fmt"
  "os"
)

func main() {
  reader := bufio.NewReader(os.Stdin)
  fmt.Print("Enter text: ")
  text, _ := reader.ReadString('\n')
  fmt.Println("You entered:", text)
}

Результат выполнения кода при вводе пользователем "hello world":

go"Enter text: hello world"
"You entered: hello world\n"

Пример

Давайте используем bufio.NewReader для чтения данных из строки с помощью strings.NewReader:

gopackage main

import (
  "bufio"
  "fmt"
  "strings"
)

func main() {
  data := "abcde\nfghij\nklmno"
  reader := bufio.NewReader(strings.NewReader(data))
  
  line, err := reader.ReadString('\n')
  fmt.Printf("Line 1: %q", line)
  
  line, err = reader.ReadString('\n')
  fmt.Printf("Line 2: %q", line)
  
  remaining, _ := reader.ReadString('\n')
  fmt.Printf("Remaining: %q", remaining)
}

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

go"Line 1: \"abcde\\n\""
"Line 2: \"fghij\\n\""
"Remaining: \"klmno\""

Пример

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

gopackage main

import (
  "bufio"
  "fmt"
  "strings"
)

func main() {
  reader := bufio.NewReader(strings.NewReader("abcde"))
  peeked, _ := reader.Peek(3)
  fmt.Println("Peeked:", string(peeked))
  
  read, _ := reader.ReadByte()
  fmt.Println("Read:", string(read))
}

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

go"Peeked: abc"
"Read: a"

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

  • функцию bufio.NewReaderSize,
    которая создает буферизированный читатель с указанным размером буфера
  • функцию bufio.NewScanner,
    которая создает сканер для построчного чтения данных
  • функцию bufio.NewWriter,
    которая создает буферизированный писатель для эффективной записи данных
  • метод bufio.Reader.ReadString,
    который читает строку до указанного разделителя