「労働者が自分の仕事をうまくやりたいなら、まず自分の道具を研ぎ澄まさなければなりません。」 - 孔子、「論語。陸霊公」
表紙 > プログラミング > Golang で Bytes.Buffer の先頭に書き込むにはどうすればよいですか?

Golang で Bytes.Buffer の先頭に書き込むにはどうすればよいですか?

2024 年 11 月 8 日に公開
ブラウズ:422

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

Golang でのプレフィックス バッファーの書き込み

Golang では、bytes.Buffer は効率的な文字列の連結と操作のために設計された型です。ただし、開発者によっては、バッファに追加するだけの組み込みヘルパー メソッド (WriteString など) とは異なり、バッファの先頭に書き込む必要がある場合があります。

Write to Beginning of Buffer

bytes.Buffer の基礎となる buf (内部バイト バッファ) はエクスポートされませんが、その内容を間接的に操作することは可能です。これを実現する方法は次のとおりです:

buffer.WriteString("B")
s := buffer.String()
buffer.Reset()
buffer.WriteString("A"   s)
  1. Write to End of Buffer: 最初に、WriteString.
  2. を使用して文字列「B」をバッファの末尾に書き込みます。
  3. バッファ内容の取得: String メソッドを使用して、バッファの内容全体を文字列形式で取得し、変数 s に格納します。
  4. リセット バッファ:バッファを初期状態に戻し、バッファから以前の内容をすべて削除します。
  5. バッファの先頭に書き込み: 文字列 "A" の後に以前に取得した文字列 s をバッファに書き込みます。 WriteString を使用します。

「A」と s を連結すると、効果的にバッファの先頭に「A」が書き込まれ、その後に元の内容が続きます。

Example

次のコードはプロセスを示しています:

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

Output:

AB

この戦略は、標準ライブラリの bytes.Buffer 型の制限にもかかわらず、Golang のバッファの先頭に書き込むための回避策を提供します。

最新のチュートリアル もっと>

免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。

Copyright© 2022 湘ICP备2022001581号-3