[]byte(string) の価格
Go での []byte(string) 変換は、コピーを伴うコストのかかる操作です。これは、Go の文字列は不変ですが、バイト スライスは変更可能であるためです。したがって、後続のスライス操作で元の文字列が変更されないように、文字列のバイトのコピーが作成されます。
変換はキャストではなく、単にビットを所定の位置に再解釈するだけです。代わりに、メモリの割り当てとコンテンツの転送が必要な変換です。これは、シナリオによっては負荷が高くなる可能性があります。
例として、次のコードを考えてみましょう。
func toBytes(s string) []byte { return []byte(s) }
この関数は、文字列を入力として受け取り、バイト スライスを返します。文字列からバイト スライスへの変換では、文字列のすべてのバイトを新しいバイト スライスにコピーする必要があります。文字列が大きい場合、これはコストのかかる操作になる可能性があります。
逆変換
バイト スライスから文字列への逆変換には、コピーも含まれます。ただし、エンコードまたはデコードは実行されません。バイト スライス内のバイトはそのまま文字列にコピーされます。
結論
[]byte(string) と string([]byte) の変換Go では、コピーを伴うコストのかかる操作を実行します。これは、Go の文字列は不変ですが、バイト スライスは変更可能であるためです。これらの変換を実行するときは、パフォーマンスへの潜在的な影響を認識することが重要です。
以上がGo での `[]byte(string)` 変換のコストはどのくらいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。