問題:
文字列を変換する必要があります特に大規模なデータ セットを処理する場合、メモリ コピーのパフォーマンスを犠牲にすることなく、バイト スライスにコピーできます。
答え:
ステップ 1: メモリ コピーを理解する問題
Go の文字列は不変です。つまり、その場で変更することはできません。したがって、[]byte(string) 構文を使用して文字列をバイト スライスに変換すると、メモリ コピーが作成されます。
ステップ 2: 安全でないを使用する
メモリを防ぐにはコピーなど、安全でない操作が行われる可能性があります。 unsafe String 関数を使用すると、基になる文字列データへのポインタを取得できます。
<code class="go">import "unsafe" func unsafeGetBytes(s string) []byte { return (*[0x7fff0000]byte)(unsafe.Pointer( (*reflect.StringHeader)(unsafe.Pointer(&s)).Data), )[:len(s):len(s)] }</code>
説明:
追加の考慮事項:
以上がメモリコピーせずにGoの文字列からバイトスライスを取得するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。