Go では、[]byte(string) は型変換です。関数呼び出しではありません。この変換により、文字列をバイトのスライスに変換できます。ただし、[]byte(string) と []byte(*string) の大きな違いの 1 つは、前者にはコピーが必要ですが、後者にはコピーが必要ないことです。
[]byte(string) を使用して文字列を []byte に変換するとき、Go は元の文字列の不変性を保証するために入力引数のコピーを実行する必要があります。文字列は不変であり、作成後に内容を変更できないため、これは非常に重要です。バイト スライスが元の文字列を指し、変更を許可する場合、文字列の不変性に違反します。
特定の状況では、Go は []byte に必要なコピーを最適化して削除する可能性があります。 (文字列) 変換。これらの最適化は、不変文字列が変更できないことをコンパイラが保証できる場合に行われ、メモリ効率が確保されます。たとえば、特定のマップ検索やバイト反復シナリオでは、コンパイラが不要なコピーを特定して削除する場合があります。
[]byte(string) での追加のコピーには、潜在的なパフォーマンス ヒット:
以上が文字列をバイトに変換: `[]byte(string)` がいつコピーされるのか、そしてなぜ?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。