文字列にわたる範囲がインデックスごとのバイトのルーンを返す理由
Go のドキュメントと私たち自身のテストによると、文字列にわたる範囲の場合、取得された要素は rune 型ですが、str[index] を使用して文字列にインデックスを付けるとバイトが得られます。
この区別の主な理由は、文字列型の定義にあります。文字列は一連のバイトを表し、インデックスを作成することで個々のバイトにアクセスできます。
一方、range 句は for で使用されます。ステートメントを使用すると、文字列内の Unicode コード ポイントをトラバースできます。 0 バイト インデックスから開始して、この反復により、UTF-8 でエンコードされた各コード ポイントの最初のバイト インデックスと、対応するコード ポイント値 (ルーン タイプ) が返されます。
コードポイントではなく文字列内のバイトを反復処理したい場合は、いくつかのオプションがあります:
これらの代替手段は、コードの可読性を犠牲にすることなくバイトへの直接アクセスを提供します。
以上がGo で文字列を範囲指定するとルーンが返されるのに、インデックス作成ではバイトが返されるのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。