Go と Rustの文字列

| コメント(0) | トラックバック(0)

Go言語における文字列はUTF-8のバイト列を保持します。また、Unicodeの1符号位置に対応するデータ型としてruneというものが用意されており、これは32ビット整数と同じものです。他の言語でいうchar型にあたります。

Rustでも類似の形です。つまり、文字列型はUTF-8のバイト列を保持し、Unicodeのスカラー値に対応する型としてcharが定義されています。(ここでわざわざ「スカラー値」といい「符号位置」としていないのはRustのドキュメントがそうしているせいで、まあほぼ同じようなものですが、サロゲート上位下位の範囲の値を含まない点だけが違います)

こうなるとUTF-16の出る幕がない感じになってきます。今後、JavaやC#のように「文字列はUTF-16、char型は16ビット」というものから、こちらの方式へシフトしてくるのでしょうか。JavaなどはUnicodeのBMPにしか文字の割り当てのなかった頃に設計されたので、当時ならこうだろうなというのは分かります。

ちなみにRubyは文字列の内部コードはひとつのものに限定されませんが、Unicodeの使用ではUTF-16でなくUTF-8が普通なので、GoやRustと近い形といえるでしょう。ただしchar型にあたるものはありません。

トラックバック(0)

トラックバックURL: http://yanok.net/yanok/mt-tb.cgi/647

コメントする

最近のブログ記事

LGの KF94マスクを買ってみた
マスクの重要性 デルタ株の感染力によって…
『[改訂新版] プログラマのための文字コード技術入門』増刷決定!
拙著『[改訂新版] プログラマのための文…
停電対策として自宅にUPSを導入した話
私は写真撮影が趣味で,撮影した写真は自宅…
Javaと Pythonの識別子の仕様を比較する
前の記事で,Pythonの識別子のUni…
Pythonの識別子における Unicode文字
プログラミング言語Pythonで,変数名…

広告