文字列の範囲とバイトの範囲
Go では、文字列の範囲の動作と個々の文字にアクセスする動作は大きく異なります。文字列を範囲指定する場合、取得される値はルーン型であり、Unicode コード ポイントを表します。逆に、インデックス (str[index]) によって文字にアクセスすると、バイト型の値が返されます。この区別を理解することは非常に重要です。
Go の文字列データ型の定義によれば、文字列は不変の長さのバイトのシーケンスです。文字列の要素には、整数インデックスを使用してアクセスできます。これは、各要素が 1 バイトを表す文字のインデックス付けの動作と一致しています。
対照的に、for ループの range 句を使用すると、文字列を含むさまざまなデータ型を反復処理できます。文字列の場合、範囲は最初のバイトから開始して文字列内の Unicode コード ポイントを反復します。各反復により、現在のコード ポイントの最初のバイトのインデックスが整数として生成され、コード ポイント自体がルーンとして生成されます。この動作は Go プログラミング言語仕様で指定されています。
特に文字列の個々のバイトを反復処理する場合は、整数インデックスを使用して通常の for ループを使用するか、文字列をバイト スライス (
要約すると、Go で文字列を範囲指定すると Unicode コード ポイント (ルーン タイプ) が返され、インデックスによって個々の文字にアクセスすると返されます。個々のバイト。この区別は、文字列データ型の定義と文字列の range 句の動作に根ざしています。 Go で文字列データを効率的に操作するには、この違いを理解することが不可欠です。
以上がGo Strings: ルーンとバイト: レンジングとインデックス作成の違いは何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。