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

DDD
リリース: 2024-10-27 01:57:30
オリジナル
176 人が閲覧しました

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

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

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

複数の代入について

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

<code class="go">z, err := ioutil.ReadFile(z)</code>
ログイン後にコピー

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

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

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

解決策

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

  1. string() 関数を使用して [] バイトを文字列に変換します:
<code class="go">buf, err := ioutil.ReadFile(z)
if err != nil {
    log.Fatal(err)
}
z = string(buf)</code>
ログイン後にコピー
  1. 文字列の代わりに z を [] バイトとして宣言します:
<code class="go">var z []byte
z, err := ioutil.ReadFile(z)</code>
ログイン後にコピー

バイナリ データの操作

バイナリ データを文字列に変換することは可能ですが、バイナリ データ自体を直接操作する方が望ましい場合がよくあります。これにより、不必要な変換が回避され、データの元の形式が保持されます。

以上がGo で []byte を文字列に代入できないのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!