«Если рабочий хочет хорошо выполнять свою работу, он должен сначала заточить свои инструменты» — Конфуций, «Аналитики Конфуция. Лу Лингун»
титульная страница > программирование > Как я могу записать начало Bytes.Buffer в Golang?

Как я могу записать начало Bytes.Buffer в Golang?

Опубликовано 8 ноября 2024 г.
Просматривать:483

How Can I Write to the Beginning of a Bytes.Buffer in Golang?

Префиксная запись в буфер в Golang

В Golang bytes.Buffer — это тип, предназначенный для эффективной конкатенации строк и манипулирования ими. Однако некоторые разработчики могут столкнуться с необходимостью записи в начало буфера, в отличие от встроенных вспомогательных методов (например, WriteString), которые добавляются только в буфер.

Запись в начало буфера

Хотя базовый buf (внутренний байтовый буфер) bytes.Buffer не экспортируется, его содержимым можно манипулировать косвенно. Вот как этого можно добиться:

buffer.WriteString("B")
s := buffer.String()
buffer.Reset()
buffer.WriteString("A"   s)
  1. Запись в конец буфера: сначала запишите строку «B» в конец буфера с помощью WriteString.
  2. Извлечь содержимое буфера: используйте метод String для получения всего содержимого буфера в строковом формате и сохранения его в переменная s.
  3. Сбросить буфер: сбросить буфер в исходное состояние, при этом из буфера будет удалено все предыдущее содержимое.
  4. Запись в начало буфера : запишите в буфер строку «A», за которой следует ранее полученную строку s, используя WriteString.

Объединяя «A» и s, мы фактически записываем «A» в начало буфера, за которым следует исходное содержимое.

Пример

Следующий код демонстрирует этот процесс:

package main

import (
    "bytes"
    "fmt"
)

func main() {
    var buffer bytes.Buffer
    buffer.WriteString("B")
    s := buffer.String()
    buffer.Reset()
    buffer.WriteString("A"   s)
    fmt.Println(buffer.String())
}

Выход:

AB

Эта стратегия обеспечивает обходной путь для записи в начало буфера в Golang, несмотря на ограничения стандартной библиотеки типа bytes.Buffer.

Последний учебник Более>

Изучайте китайский

Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.

Copyright© 2022 湘ICP备2022001581号-3