Q.
interface の使い方、継承との違いがまだしっくりときていません。できること、できないことをできれば他の言語(Java, Rubyなど)と比較して解説していただけると嬉しいです。
A.
Goに継承はない。
interfaceは抽象化したい時に使う。
httphandlerが有名なinterfaceのひとつ。あるいは、io.Reader/Writer。
Javaはimplemetsする必要があるが、Goでは必要ない。
⇒ダックタイピング
Goではinterfaceを後から作ることができる。
Q.
保守運用が楽になるエラーハンドリングの方法や参考になる資料があれば教えていただきたいです。根本原因にたどり着くまでに時間がかかることがよくあります。
A.
ログを出しましょう。
ラップして上に投げればいいわけではない。
エラーを返すと受取り側の処理が複雑になるので、都度panicで出したい。
Q.
初心者向けに、コードリーディングに最適なライブラリなどありましたら教えてほしいです。
A.
標準ライブラリ、という回答が一般的。
stringsパッケージが簡単かも。
デバッカーでライブラリの中まで入れると良い。
身近なライブラリを読むといいかも。
ライブラリに書いてあることが正しいわけではない。
デバッカーdelve
Golangのデバッガdelveの使い方
Q.
業務でGoを使わない場合、基礎を学んだ後はどのように学習していくのがいいですか?
A.
自分が使うものを作るのが一番。
日々の生活に困っているなど。。
Q.
jsonを生成するのがとても辛いのですが、ベストプラクティスってあるのでしょうか?
A.
隠したいフィールドは出して。出したいフィールドは出す。
jsonの辛みを分析して、そのライブラリを作るといいかも。
jsonパッケージのライブラリを読んでみるとか。
ちなみに、structは入れ子にできる。
Q.
RubyからGoに来たエンジニアとJavaからGoに来たエンジニアでテストや設計で意見が割れることがあるので、Goならではの思想、指針みたいなものがあれば聞きたい。
A.
Goの思想はシンプル。
シンプルなものはどれかで選ぶと良い。
シンプルというのは「複雑ではない」ということ。
複雑に作ると、後々保守性が悪くなったり、依存度が高くなる。
Q.
ORMの良さ、どのORMがいいのか、何をするためのものかを教えて下さい。
A.
自分でSQL書くことが多い。
Q.
goに関する書籍でおすすめの本、最近読んでよかったものなどありましたら聞きたいです
A.
- プログラミング言語Go
- Goによる並行処理
- Goならわかるシステムプログラミング
- Goの公式ブログなどもオススメ
Q.
Goの将来性について、ご自身の考えで構いませんのでお伺いしたいです。Goのシェアはみるみる伸びていますが、Goを導入したけどPythonやRubyに戻したという話もちらほら聞くので、気になりました。
A.
Docker, k8sなどクラウド界隈ではしばらく使われるだろう。
Ruby, Pythonなど言語だけに注目して議論するのは危険。チームの状況諸々を考慮する必要がある。
早期にコンパイルNGなど、実行する前にバグがわかるのは助かる。実行時に安全。