РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
182 of 1593 menu

Метод bytes.Buffer.Write

Метод bytes.Buffer.Write записывает переданный срез байт в буфер. В качестве первого параметра метод принимает срез байт []byte, который необходимо записать. Метод возвращает количество записанных байт и ошибку. Если запись прошла успешно, ошибка будет равна nil. В отличие от метода WriteString, этот метод работает непосредственно с байтами, что позволяет записывать в буфер бинарные данные.

Синтаксис

buffer.Write(p []byte) (n int, err error)

Пример

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

package main import ( "bytes" "fmt" ) func main() { var buf bytes.Buffer data := []byte("abcde") n, err := buf.Write(data) if err != nil { fmt.Println("Error:", err) return } fmt.Println("Written bytes:", n) fmt.Println("Buffer content:", buf.String()) }

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

"Written bytes: 5" "Buffer content: abcde"

Пример

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

package main import ( "bytes" "fmt" ) func main() { var buf bytes.Buffer _, _ = buf.Write([]byte("Hello, ")) _, _ = buf.Write([]byte("world")) _, _ = buf.Write([]byte("!")) fmt.Println("Result:", buf.String()) }

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

"Result: Hello, world!"

Пример

Метод Write может использоваться для записи бинарных данных. Давайте запишем в буфер числовые значения в байтовом представлении:

package main import ( "bytes" "fmt" ) func main() { var buf bytes.Buffer numbers := []byte{1, 2, 3, 4, 5} n, err := buf.Write(numbers) if err != nil { fmt.Println("Error:", err) return } fmt.Println("Written bytes:", n) fmt.Println("Buffer bytes:", buf.Bytes()) fmt.Println("Buffer length:", buf.Len()) }

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

"Written bytes: 5" "Buffer bytes: [1 2 3 4 5]" "Buffer length: 5"

Пример

Метод Write всегда возвращает количество записанных байт, равное длине переданного среза, а ошибка всегда равна nil, поскольку буфер всегда может расширяться. Однако возвращаемые значения соответствуют интерфейсу io.Writer:

package main import ( "bytes" "fmt" ) func main() { var buf bytes.Buffer data := []byte("12345") n, err := buf.Write(data) fmt.Printf("n = %d, err = %v\n", n, err) // Добавим еще данные more := []byte("67890") n2, err2 := buf.Write(more) fmt.Printf("n2 = %d, err2 = %v\n", n2, err2) fmt.Println("Full buffer:", buf.String()) }

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

"n = 5, err = <nil>" "n2 = 5, err2 = <nil>" "Full buffer: 1234567890"

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

  • метод bytes.Buffer.WriteString,
    который записывает строку в буфер
  • метод bytes.Buffer.Bytes,
    который возвращает содержимое буфера как срез байт
  • метод bytes.Buffer.String,
    который возвращает содержимое буфера как строку
  • функцию bytes.NewBuffer,
    которая создает новый буфер из среза байт
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить