[Go言語]もっとType(型定義)を活用しよう!

こんにちは。KOUKIです。

最近、TypeScriptを学んでおり、「」というものを強く意識するようになりました。

現職はWeb開発者ですが、PythonやJavaScriptなど、型定義の無い言語ばかり経験を積んでおり、GoやJavaなどを使ったシステム開発の経験はありません。

そのため、「型ってめんどくせーな」と密かに思っていたわけですが、TypeScriptを学んでいくうちに「型ってめっちゃ便利じゃね?」という意識に変わってきました。

こういった経緯もあり、Go言語でも型をガンガン使っていこうと思ったわけです。

本記事では、型の使い方を一部紹介したいと思います。

型を利用する理由

Go言語で型付けするとき「type」キーワードを使います。

そのため、こんな記述をよく見かけると思います。

上記は、EngineerというStructの型を定義しました。これはよく見かけるパターンで、私も利用しています。

一方、以下のような型付けもできます。

Statusをstringで型付けしました。しかし、こういった使い方は、ほとんどしてませんでした。

何故なら、Enginnerのstatusの値は「手入力」で済ませてしまっていた為です。

上記では、statusにnewを「手入力」しました。

実際に、サンプルコードを見てみましょうか。

改めて見るとこのコードは、やばいなと思います。statusには「一体何が入るんだ?」という感じです。

他の開発者の立場から考えると、このコードは使うのが少し怖いですね。

これを型付け機能をうまく使って、改善しようというのが本記事の趣旨です。

改善後のコード

型付けを使ったコードのサンプルを以下に記載します。

注目していただきたいのは、以下のコードです。

このようにする事で、statusに入る値を限定できます。

しかも、コード中に「Status」や「New」,「Doing」,「Completed」を使えるので、コードがより文章化されて読みやすいですし、ChangeStatus関数に至っては、Statusで型付けしている変数しか扱えなくしています(限定)。

タイプミスなども絶対にないと思うので、変な値が入ることもないと思います。

おわりに

Go言語を学んでいる人は、TypeScriptも学ぶと良いと思います^^

型付けをうまく活用して、よりレベルの高い開発者になりましょう!

それでは、また!