カサレリア。katzenです。
前回は
V言語の文字列として、基本的な使い方から、変数展開、文字列長の取得や変換について紹介しました。
なにかわからないこととかありましたら、コメントいただければ一緒に悩みたいと思います。
間違えているところとか、アドバイスなどもいただけると嬉しいです。
さて、今回はあまり他の言語では見ないrune(ルーン)についてです。
魔術的なことを期待してしまいますが、前回同様文字列の仲間になります。
基本
端的に言えば、rune
は単一のUnicode文字を表すものになります。
宣言は``バッククォートです。
r := `あ` // 英数字でももちろん問題ありません。(u32)
a := 'あ' // こちらは文字列(u8配列)
println(r)
>>> あ
println(a) // 表示上は一緒です。
>>> あ
Unicodeを端的に言えば、4バイト以内で1文字を表す文字コードです。
そのため、V言語ではrune
はu32
のエイリアスでもあります。
u32
ちなみにu32とは unsigned 32bitで、符号がないため4バイト(4*8bit)がデータ範囲として使えるということです。符号付きの場合、先頭1bitがプラスかマイナスかの判定に使われますので、データ範囲が狭くなります。
変換
rune
を文字列に変換したい場合、str()
を使用します。
r := `あ`
println("あ" == r.str())
>>> true
バイトデータに変換したい場合は、bytes()
を使用します。
r := `あ`
println(r.bytes())
>>> [0xe3, 0x81, 0x82]
文字コード指定
文字コードからrune
にすることも出来ます。
num := `\141`
println(num)
>>> a
unicode := `\u2605`
println(unicode)
>>> ★
hex := `\xe3\x81\x82`
println(hex)
>>> あ
あくまで1文字ということに気をつけましょう。
文字列からrune
への変換は前回紹介しましたのでよろしければ参照ください。