Метод bufio.Writer.WriteByte

Метод WriteByte записывает один байт в буферизованный вывод. Он принимает один параметр - байт (тип byte), который нужно записать. Метод возвращает ошибку, если запись не удалась. При успешной записи возвращается nil. Важно помнить, что данные не сразу попадают в основной поток вывода, а накапливаются во внутреннем буфере. Для принудительной записи всех накопленных данных необходимо вызвать метод Flush.

Синтаксис

goerr := writer.WriteByte(b byte)

Пример

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

gopackage main

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

func main() {
  writer := bufio.NewWriter(os.Stdout)
  err := writer.WriteByte('A')
  if err != nil {
    fmt.Println("Error:", err)
    return
  }
  writer.Flush()
}

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

go"A"

Пример

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

gopackage main

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

func main() {
  writer := bufio.NewWriter(os.Stdout)
  bytes := []byte{'H', 'e', 'l', 'l', 'o'}
  for _, b := range bytes {
    err := writer.WriteByte(b)
    if err != nil {
      fmt.Println("Error:", err)
      return
    }
  }
  writer.Flush()
}

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

go"Hello"

Пример

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

gopackage main

import (
  "bufio"
  "fmt"
)

func main() {
  writer := bufio.NewWriter(nil)
  err := writer.WriteByte('x')
  if err != nil {
    fmt.Println("Error:", err)
    return
  }
  fmt.Println("Buffered:", writer.Buffered())
}

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

go"Buffered: 1"

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

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