Функция bufio.NewWriterSize
Функция bufio.NewWriterSize создает новый объект bufio.Writer,
который буферизирует запись в указанный io.Writer.
В первый параметр мы передаем поток вывода (например, os.Stdout или файл),
во второй параметр мы передаем размер буфера в байтах.
Если размер буфера меньше или равен нулю, функция устанавливает минимальный размер буфера.
Буферизация позволяет уменьшить количество системных вызовов, что повышает производительность
при множественных операциях записи.
Синтаксис
bufio.NewWriterSize(w io.Writer, size int) *bufio.Writer
Пример
Давайте создадим буферизированный писатель с размером буфера 4096 байт и запишем несколько строк:
package main
import (
"bufio"
"fmt"
"os"
)
func main() {
writer := bufio.NewWriterSize(os.Stdout, 4096)
writer.WriteString("Hello, ")
writer.WriteString("World!")
writer.Flush()
}
Результат выполнения кода:
"Hello, World!"
Пример
Давайте проверим, что данные действительно буферизируются,
и они не будут выведены до вызова Flush:
package main
import (
"bufio"
"fmt"
"os"
)
func main() {
writer := bufio.NewWriterSize(os.Stdout, 100)
writer.WriteString("Buffered data")
fmt.Println("Data is buffered")
writer.Flush()
}
Результат выполнения кода:
"Data is buffered"
"Buffered data"
Пример
Давайте создадим буферизированный писатель с размером буфера 5 байт и запишем строку, которая превышает размер буфера:
package main
import (
"bufio"
"os"
)
func main() {
writer := bufio.NewWriterSize(os.Stdout, 5)
writer.WriteString("12345")
writer.Flush()
}
Результат выполнения кода:
"12345"
Смотрите также
-
функцию
bufio.NewWriter,
которая создает буферизированный писатель с размером буфера по умолчанию -
функцию
bufio.Writer.WriteString,
которая записывает строку в буферизированный писатель -
функцию
bufio.Writer.Flush,
которая сбрасывает буфер в поток вывода -
функцию
bufio.NewReaderSize,
которая создает буферизированный читатель с заданным размером буфера