自分は 2017/8頃(曖昧)からメインで書く言語を Python から Go に変更しました。 Goを書き始めて割と早い段階でGoが一番好きになりました。 そこでなんで Go が好きなのかということを頑張って言語化しようと思います。
若干他の言語と比較する部分もありますが、決して他の言語をディスったり、 他の言語より優れているということが言いたいわけではないのでご了承ください。
- 依存するものが小さく、バイナリ1つインストールするだけで良い
- Prometheus の exporter とかインストールするの簡単
- Docker Imageも最小限になる
- 静的型付け
- ビルド出来ている時点で一定の信頼性が担保されている
- よく知らないコードを読んだり修正するときとかだいぶ有り難い
- GoDocが素晴らしい
- 何もしなくてもライブラリのドキュメントが出来上がっている
- ライブラリの公開が容易
- GitHubに公開するだけ
- npm や pypi のようなレジストリがないので楽
- go test とか go vet, gofmt みたいに標準ツールが揃っている
- コーディング規約で悩む必要がない
- lintツールが充実している
- gometalinter とか使っておけば OK
- lintできる環境を構築するのにそこまで頑張らなくて良い
- エラーハンドリングが暗黙的に省略できないので信頼性が高い
- Goのエラーハンドリング嫌いって人もいるし、v2で改善されるって話も聞くけど、自分はむしろ好き(面倒なのは理解できるけど)
- 言語仕様がシンプル(客観的な根拠はないし、難しい部分もあるけど、そんな気がする)
- メタプログラミング使った、魔術的なコードになりにくい
- interface 使ってコードを疎結合にするのが書いてて気持ちいい
- 並列処理が書きやすい