「労働者が自分の仕事をうまくやりたいなら、まず自分の道具を研ぎ澄まさなければなりません。」 - 孔子、「論語。陸霊公」
表紙 > プログラミング > Go で UTF-8 文字列をバイト配列に効率的に変換するにはどうすればよいですか?

Go で UTF-8 文字列をバイト配列に効率的に変換するにはどうすればよいですか?

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

How to Efficiently Convert UTF-8 Strings to Byte Arrays in Go?

UTF-8 文字列をバイト配列に変換する

JSON のアンマーシャリングにはバイト スライス入力が必要ですが、文字列は Go では UTF-8 として保存されます。この記事では、UTF-8 文字列からバイト配列への効率的な変換について説明します。

直接変換

Go では、文字列をバイト スライスに変換し、文字列のバイトのコピーを作成できます。 :

s := "some text"
b := []byte(s)

ただし、大きな文字列の場合、このアプローチはコピーのため非効率的です。

io.Reader の使用

効率的な代替方法は、strings.NewReader() を使用して、コピーせずに文字列から読み取る io.Reader を作成することです:

s := `{ "somekey": "somevalue" }`

var result interface{}
err := json.NewDecoder(strings.NewReader(s)).Decode(&result)

このアプローチでは、文字列のコピーが回避されます。

小さな JSON テキスト

小さな JSON テキストの場合、直接変換が依然として高速なオプションです:

s := `{ "somekey": "somevalue" }`

var result interface{}
err := json.Unmarshal([]byte(s), &result)

注: io.Reader (ファイルまたはネットワークなど) から JSON を読み取る場合は、io を渡します。中間文字列読み取りを行わずに json.NewDecoder() に直接リーダーを送信します。

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

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

Copyright© 2022 湘ICP备2022001581号-3