「労働者が自分の仕事をうまくやりたいなら、まず自分の道具を研ぎ澄まさなければなりません。」 - 孔子、「論語。陸霊公」
表紙 > プログラミング > Go で []byte を文字列に代入できないのはなぜですか?

Go で []byte を文字列に代入できないのはなぜですか?

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

Why Can\'t I Assign []byte to a String in Go?

バイト割り当てエラーについて: [] バイトを文字列に割り当てることができません

フォルダー内のファイルを読み取ろうとしたときに、エラーが発生しましたファイルの内容を読み取ろうとすると、「複数の割り当てで []byte を z (文字列型) に割り当てることができません」というメッセージが表示されます。このエラーの背後にある理由を詳しく調べてみましょう。

複数の代入について

コードのように、複数の変数に 1 行で値が割り当てられている場合:

z, err := ioutil.ReadFile(z)

左側の各変数代入演算子は、関数によって返された対応する値を受け取ります。この場合、ioutil.ReadFile 関数は 2 つの値を返します: []byte (バイナリ データ) と error。

文字列へのバイトの割り当て

問題のある部分は試行していますioutil.ReadFile から返された []byte (バイナリ データ) を、文字列として宣言された z 変数に割り当てます。 z はバイナリ データではなく文字列値を期待しているため、ここでエラーが発生します。

解決策

このエラーを解決するには、2 つのオプションがあります:

  1. string() を使用して [] バイトを文字列に変換します関数:
buf, err := ioutil.ReadFile(z)
if err != nil {
    log.Fatal(err)
}
z = string(buf)
  1. z を文字列ではなく []byte として宣言します:
var z []byte
z, err := ioutil.ReadFile(z)

バイナリ データの操作

バイナリ データを文字列に変換することは可能ですが、多くの場合、バイナリデータそのもの。これにより、不必要な変換が回避され、データの元の形式が保持されます。

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

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

Copyright© 2022 湘ICP备2022001581号-3