"Se um trabalhador quiser fazer bem o seu trabalho, ele deve primeiro afiar suas ferramentas." - Confúcio, "Os Analectos de Confúcio. Lu Linggong"
Primeira página > Programação > Como posso escrever no início de um Bytes.Buffer em Golang?

Como posso escrever no início de um Bytes.Buffer em Golang?

Publicado em 2024-11-08
Navegar:962

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

Gravações de buffer de prefixo em Golang

Em Golang, o bytes.Buffer é um tipo projetado para concatenação e manipulação eficiente de strings. No entanto, alguns desenvolvedores podem encontrar a necessidade de escrever no início de um buffer, ao contrário dos métodos auxiliares integrados (por exemplo, WriteString) que apenas são anexados ao buffer.

Write to Beginning of Buffer

Embora o buf subjacente (buffer de bytes interno) de bytes.Buffer não seja exportado, é possível manipular seu conteúdo indiretamente. Veja como você pode conseguir isso:

buffer.WriteString("B")
s := buffer.String()
buffer.Reset()
buffer.WriteString("A"   s)
  1. Write to End of Buffer: Inicialmente, escreva a string "B" no final do buffer usando WriteString.
  2. Retrieve Buffer Contents: Use o método String para recuperar todo o conteúdo do buffer em formato de string e armazene-o na variável s.
  3. Reset Buffer: redefina o buffer para seu estado inicial, o que remove todo o conteúdo anterior do buffer.
  4. Write to Beginning of Buffer: Escreva a string "A" seguida pela string s recuperada anteriormente no buffer usando WriteString.

Ao concatenar "A" e s, efetivamente escrevemos "A" no início do buffer, seguido pelo conteúdo original.

Exemplo

O código a seguir demonstra o processo:

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())
}

Saída:

AB

Esta estratégia fornece uma solução alternativa para gravar no início de um buffer em Golang, apesar das limitações da biblioteca padrão bytes.Buffer type.

Tutorial mais recente Mais>

Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.

Copyright© 2022 湘ICP备2022001581号-3