ブログ名はまだ未定

学生エンジニアが考える技術のこと。プログラミングやアプリケーションのことが多め

【RubyからのGo】Go言語の配列とかマップ、スライスとかのコンポジット型とか関して勉強したこと

今まで学生生活を通してRuby言語だけを勉強してきた。その理由は、Rubyを完全に理解できていないから。

一つの言語を習熟していないのに、他の言語を勉強してもどちらも使い物にならない。じゃ個人的に話にならないと思ったから。

 

、、とずっと思ってきたけど、Goの求人も増えているし自分も学生のうちにGo言語に触っておきたかったので、Goの勉強をすることにした。 Goのプロジェクトの求人って面白そうなのが多いのね。仮想通貨取引所だったりライブ配信アプリだったり。

これらのプロジェクト、Railsでもあるんだけど、なんとなく自分がコミットするイメージがない。 いつか働くなら初めての言語で初めてのプロダクトの方が圧倒的に面白そうだから、今更Rubyもなぁという気持ちが先行してしまう。

Rubyをディスっている訳ではなくて、今の自分はとりあえずプロの人レベルには到底及ばないけどある程度Rubyがわかってきたから他の言語を見て見たい気持ちが強い。

今回はその勢いでとりあえずGoの勉強をはじめて見た感じ。

自分はRubyそこそことJSがちょびっとかけるくらいの見習いプログラマーなので、同じくらいのレベル感の人はGoの勉強をするのに参考にしてもらればと思う。

初心者からRubyを初めて複数言語に挑戦してみよう!という人は絶対数がかなり多いと思うので、ぜひ参考にしてもらいたい。

と言っても大したことはまとまっていないけど。

 

Goの型のお話

静的言語を学ぶのは自分は初めてだったけど、どうやらGoだと型が厳密に決まっているらしい。

Goのコンポジット型のお話

型とどう関連づくか知らないけど、Goでは複数のオブジェクト(Goでオブジェクトといういい方をするのかは不明だが)を格納するのに次の4つの型がある。

  • 配列型
  • マップ型
  • スライス
  • 構造体

Rubyをやっていた人だと、配列型くらいしかイメージが湧かないだろう。 自分もそうだ。今もあんまりイメージが湧いていない。

可変長がスライス、配列で、固定長が配列型、マップ型だと。 それくらいしかまだ理解していない。。

ただ、Goだとスライスは非常によく登場して理解しておかないとまずい。 配列はスライスを理解するには必要だが、固定長で型指定があるからあんまり使われないとも聞いた。

この辺はあんまり理解していないけど、

github.com

ここら辺のリポジトリを参考に、他のエントリーでまとめてみよう。多分適当になるけど。

Goの構造体に関してのお話

今の段階のイメージだと、Goの構造体はかなり重要。

WEBアプリケーションだとJSON経由で情報のやりとりをする機会はありすぎるだろうけど、goの場合だと受け取ったJSONオブジェクトを十中八九、構造体に変換する必要があるらしく、そのためGoの構造体の重要度はかなり高い。

ちなみにインターン先のエンジニアさんによく言われているんだけど、Githubのスター数はかなり重要な指標になって、今回みたいに 「Goの文法よくわからないけど、動くもののコード見たいわ」

みたいなテンションの時とかはGithubでスターが多いのを見つけてコード見ておけば間違いはないらしい。

とはいえOSSのコード読むのは難しいんだけどね。

www.plusq.life

最後に宣伝ですが、こんなメディアを個人で作っているのでよかったら見てください。 サーバーサイド言語はRubyで、見えてない管理画面の部分がVue.jsのSPAになってます。

Goのおすすめの参考書

Go言語によるWebアプリケーション開発

Go言語によるWebアプリケーション開発

チュートリアル形式でGo言語のアプリケーションが学べる。リアルタイムツィート解析システムを作らせてレベル感は高いと思う。 MongoDBやWebsocketガンガン使う感じで面白い。

プログラミング言語Go (ADDISON-WESLEY PROFESSIONAL COMPUTING SERIES)

プログラミング言語Go (ADDISON-WESLEY PROFESSIONAL COMPUTING SERIES)

とりあえずこの本をマスターしておけば、Goは一通りかけるよと誰かに教わりました。今も勉強中です。