ロゴ ロゴ

Go言語の好きになれないところ

Go言語はシンプルに並列処理が書くことができる言語としてWebアプリケーションのバックエンドに採用されることが多い言語です.

ですが、私はGo言語を微妙に好きになれません.

どういうところが好きになれないのでしょうか.

型パラメーターがない

Go言語には現在型パラメーターがなく, 次の大型アップデートまで待たねばなりません.

ちなみに型パラメーターを使うと, 似たような処理を異なる型の変数に対して行いたいときに大きく力を発揮します.

おしゃれな感じで関数型プログラミングができない

別にScalaほどガチで関数型要素がほしいわけではないのですが,

var s []int = []int{2,3,5,7,11} 
s.Map(i=>{return i*i})
 .Select(i=>{i>100})

みたいな感じで書きたいですよね~

無名関数をうまいこと使えば似たようなことができるものの, funcといちいち書くアレを好きにはなれませんでした

再代入禁止の変数を用意できない

別に構造体にGetterを実装したinterfaceから値を引っ張ってくれば済む話ではあるのですが,

val a = os.Getenv("PORT")

って書きたくないですか?

まとめ

ほとんど僕の「こう書けたらいいな~」っていう感想でしかないので, 「Goの設計思想はシンプルであることなんだからこんな機能は用意されていないのは当然」という指摘もあると思うんですけど, でも自分はこう書きたい.

次はGo言語のいいところを紹介したいと思います.

ちなみにこの中で自分の欲しい機能はRustという言語にほぼ実装されているのですが, Mac/Dockerの環境でコンパイルすると13分とか時間かかるのでこの辺を解決したいですね.

コメント入力

関連サイト