Уроки Golang с нуля /#27 - Bufio. Чтение и запись

preview_player
Показать описание


Package bufio предоставляет буферизованные реализации Reader и Writer. Они предоставляют дополнительные методы, добавляющие возможность буферизации к обычным операциям чтения и записи.

Основной тип в пакете bufio - это bufio.Reader, который обертывается вокруг других io.Reader и предоставляет методы для буферизованного чтения данных. Он поддерживает чтение байтов, чтение строк и чтение из буфера до определенного разделителя. Методы Read и ReadString используют внутренний буфер для считывания данных из источника, что делает операции чтения более эффективными по сравнению с непосредственным чтением из источника каждый раз.

Пример использования bufio.Reader:

package main

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

func main() {
if err != nil {
fmt.Println("Error opening file:", err)
return
}
defer file.Close()

reader := bufio.NewReader(file)
for {
line, err := reader.ReadString('\n')
if err != nil {
fmt.Println("Error reading file:", err)
return
}

fmt.Print(line)
}
}

Пакет bufio также предоставляет bufio.Writer, который предоставляет методы для буферизованной записи данных в io.Writer. Это позволяет уменьшить количество операций записи и повысить эффективность.

Пример использования bufio.Writer:

package main

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

func main() {
if err != nil {
fmt.Println("Error creating file:", err)
return
}
defer file.Close()

writer := bufio.NewWriter(file)
writer.WriteString("Hello, World!\n")
writer.WriteString("This is a test.")

writer.Flush()
}

Использование bufio.Reader и bufio.Writer может улучшить производительность операций чтения и записи ввода-вывода, особенно при работе с большими объемами данных.
Рекомендации по теме
Комментарии
Автор

Хорошие гайды, но понимание сильно затрудняется из-за произношения английских слов

FewOfView
Автор

Если ты не знаешь как читаются слова по-английски, то хотя бы акцент не изображай

madbad