《Go言語》rune(ルーン)とは?仕組みをわかりやすく解説

Go

GoとUTF-8

UTF-8でコンパイルされる

Goのソースファイルは全てUTF-8でコンパイルされます。UTF-8はUnicodeを数値変換する為の符号化形式のことを指します。Unicodeは世界中の文字を表現するために作られた仕組みであり、Unicodeコードポイントと呼ばれる識別値を用いて、各国の文字を表現します。UTF-8は1から4のバイト数をつかって1文字を表現します。

rune型とrune(ルーン)

文字列を日本語単位で表現するためにrune型という型を用います。rune型の説明をする前に以下のプログラムを見てください。

char[0]が参照する値は「中」ではなく「e4」です。Goに慣れていない新米プログラマーはわけがわからなくなってしまうと思います。さらに追い込みをかけていきます。以下のプログラムを見てください。

char[1:]で2番目の要素以降を取り出すと「��国語」と文字化けが起きてしまいます。なぜこのようなことが起きてしまうのかを理解するためにcharをダンプしてみます。

size+6、すなわち9回ループを回しているのは「中国語」という文字を表現するのに9バイト使われているので、その内容を出力するためです。つまり、UTF-8では「e4 b8 ad」という数値のセットを漢字の「日」としているのです。なので先ほどのchar[1:]だとこのセットが崩れてしまうので「日」の文字が化けてしまったのです。ちなみにUTF-8において、ある文字を表現する為の数値のセットをルーン(rune)といいます。

rune型を出力する

rune型を使って各文字を参照するプログラムを用意したので見てください。

「中国語」という3文字に対して、indexが0, 1, 2 で各文字を参照できていることが確認できると思います。

番外編:働くエンジニアにおすすめアイテム3撰

記事の内容とは別に、日々エンジニアの業務を行う上で役に立っているアイテムを紹介します。どれも実際に使って良いと思ったものだけ紹介していますのでその点はご安心ください。

目の保温マッサージ

普段の業務で一番疲れる目を癒すために目元マッサージャーを毎日使っています。保温とマッサージを自動でしてくれるので、終わった後は血行が良くなり、翌日の目の疲労が激減します。また睡眠の質もあがるのでディスプレイと睨めっこの職業の方は必須アイテムだと思ってます。(笑)

座っている時の負担を減らす

8時間働くとして、その時間の殆どが椅子に座っている状態になるのがエンジニアの宿命です。椅子の性能が低いと身体に余計な負荷を掛けることとなり、良い椅子に座っている人と、そうでない椅子に座っている人にかかる1日の負担はかなり大きいです。ですので、身体への負荷を考えて、できるだけ良い椅子に座るべきです。とは言っても会社の椅子は既に決まっているので以下のクッションを購入することをおすすめします。体を包み込むようなフォールド性があり、疲労や腰の痛みなどが激減します。

自宅での作業効率をあげる椅子

最近購入したのがゲーミングチェアです。楽天ゴールドカードを持っている私は、Amazonではなく楽天市場でこの機種と似たようなものを購入しました。価格帯はほぼ同じで、このゲーミングチェアはAmazon内での評判も良いみたいですし、おすすめです。その理由は作業し終わった後の疲労感が異なり、座り心地もホールド感があって最高ですし、見た目がかっこいいからです。予算に余裕のある方は購入してみてはいかがでしょうか?

エンジニアの基礎知識・教養

別の記事でエンジニアとして知っておくべき技術本についてまとめました。スキルの高いエンジニアは極々当たり前にしっている知識だとおもいますが、そうでない方はエンジニアとして最低限知らないとまずい知識ですのでどこかで購入し、読むことをお勧めします。

筆者
筆者

今回の記事の内容は以上で終了です。最後まで読んでくれてありがとうございます。また技術、経済、株式投資などのことを Twitter でも呟いていますので良かったらフォローよろしくお願いします。

タイトルとURLをコピーしました