Golang 文字列内の文字のインデックス付け
文字列から文字を取得するには、インデックス付け操作を使用します。ただし、インデックス付きの値が予期された文字と一致しない場合があります。たとえば、以下のコードでは:
package main import "fmt" func main() { fmt.Print("HELLO"[1]) }
出力は文字「E」ではなく 69 です。
Golang 文字列エンコーディングについて
Golang は文字列リテラルに UTF-8 エンコーディングを使用します。文字「E」を含む ASCII 文字は 1 バイトを占めます。ただし、大きな Unicode 文字は複数のバイトで表現される場合があります。
文字のインデックス作成にルーン文字を使用する
文字を正しくインデックスするには、Unicode コード ポイントを表す整数の runes を使用します。ルーンは、UTF-8 の文字の基礎となるタイプです。 rune() 関数を使用してバイトをルーンに変換できます。
バイトを文字に変換
バイトを対応する文字に変換するには、 string() 関数:
fmt.Println(string("Hello"[1])) // ASCII only
このアプローチは ASCII ではうまく機能します文字。
ルーンを文字に変換する
Unicode 文字の場合、[]rune() スライスを使用してルーンを文字に変換できます:
fmt.Println(string([]rune("Hello, 世界")[1])) // UTF-8
Unicode の例文字
次の例を考えてみましょう:
fmt.Println(string([]rune("Hello, 世界")[8])) // UTF-8
これは、漢字「世界」の Unicode コード ポイントである「界」を出力します。
追加リソース
以上がGo の文字列インデックス作成で常に予期した文字が返されないのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。