Go 文字列でのバイト アクセスと変換
Go では、文字列には文字やルーンではなく、UTF-8 でエンコードされたバイトが格納されます。 str[i] で示される文字列の要素にアクセスすると、ルーンに変換されるのではなく、バイト (byte または uint8) が返されます。
for ... range 構造を使用して文字列を反復処理する場合、バイトまたはルーンのいずれかにアクセスできます。文字列のインデックス付け (str[i] など) はバイトに直接アクセスしますが、変換なしのループ (for i := range str) はルーンを反復処理します。
パフォーマンスに関する考慮事項
[]byte(str) を使用して文字列をバイト スライスに変換しても、実際のコピーは実行されません。最適化されてなくなります。したがって、次の 2 つのメソッドの間にパフォーマンスの違いはありません:
str := "large text" for i := range str { // use str[i] }
str := "large text" str2 := []byte(str) for _, s := range str2 { // use s }
ただし、最大限のパフォーマンスとコードの明瞭さのために、コードの意図に一致するメソッドを使用することをお勧めします:
文字の反復
文字列内のルーン文字を反復する場合、マルチバイト文字に注意することが重要です。 Unicode 文字などの文字は、基礎となる UTF-8 エンコーディングで複数のバイトを使用して表現される場合があります。 for ... range str 構文はこれを自動的に処理し、各反復でバイト インデックスと文字 (ルーン) 値を返します。
追加リソース
以上がGo 文字列のバイトやルーン文字にどのようにアクセスしますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。