Метод bufio.Writer.Available

Метод bufio.Writer.Available возвращает количество свободных байтов в буфере записи. Это значение показывает, сколько данных еще можно записать в буфер через методы Write, WriteString или WriteByte до того, как буфер заполнится и потребуется автоматический сброс через метод Flush. Первым и единственным параметром метод принимает указатель на экземпляр bufio.Writer.

Синтаксис

gow.Available()

Пример

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

gopackage main

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

func main() {
  // Create a buffered writer with 20 bytes buffer
  w := bufio.NewWriterSize(os.Stdout, 20)

  // Write a string of 10 bytes
  w.WriteString("1234567890")

  // Get available space
  res := w.Available()
  fmt.Println(res)
}

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

go"10"

Пример

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

gopackage main

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

func main() {
  // Create a buffered writer with 50 bytes buffer
  w := bufio.NewWriterSize(os.Stdout, 50)

  // Write first part
  w.WriteString("abcde")
  fmt.Printf("After 'abcde': %d\n", w.Available())

  // Write second part
  w.WriteString("fghij")
  fmt.Printf("After 'fghij': %d\n", w.Available())

  // Write third part
  w.WriteString("klmno")
  fmt.Printf("After 'klmno': %d\n", w.Available())

  w.Flush()
}

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

go"After 'abcde': 45"
"After 'fghij': 40"
"After 'klmno': 35"

Пример

Давайте проверим доступное место в буфере после его принудительного сброса:

gopackage main

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

func main() {
  // Create a buffered writer with 30 bytes buffer
  w := bufio.NewWriterSize(os.Stdout, 30)

  // Write some data
  w.WriteString("1234567890")
  fmt.Println("Before flush:", w.Available())

  // Flush the buffer
  w.Flush()

  // Check available space after flush
  fmt.Println("After flush:", w.Available())
}

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

go"Before flush: 20"
"After flush: 30"

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

  • метод bufio.Writer.Write,
    который записывает срез байтов в буфер
  • метод bufio.Writer.WriteString,
    который записывает строку в буфер
  • метод bufio.Writer.Flush,
    который сбрасывает буфер в нижележащий писатель
  • метод bufio.Writer.Buffered,
    который возвращает количество записанных в буфер байтов