📚
【Go】おすすめGo本3選などまとめ
私がこれまで1年程勉強しつつ、実務で使ってきたGo言語について簡単にまとめました。主な読者としては、
- ある程度プログラミングを学習した新人さん
- これまで他の言語での実務経験があるエンジニアさん
を想定しています。もともと開発チームへ新規参入される方向け資料ですが、特に隠す内容でもないのでこちらにも公開します。では、どうぞ。
はじめのハンズオン
Go自体の実践的な理解はA Tour of Goを進めるのが良いと思う。
戸惑いがちな言語仕様
1文字目でスコープが決まる
Go言語の定数・変数・関数のスコープは、
- 1文字目が 小文字 の場合は、そのパッケージだけで見える
- 1文字目が 大文字 の場合は、他のパッケージからも見える
という仕様になっている。
「例外処理」をif文で行う
「例外(exception)」という言葉を使ったが、GoにはExceptionクラスのような定義はない。その代わり、インターフェースとしてerror型が定義されている。
// The error built-in interface type is the conventional interface for
// representing an error condition, with the nil value representing no error.
type error interface {
Error() string
}
Goにおいてはこうしたerror型の変数も、関数の返り値として返ってくるため、エラーハンドリングは通常のif文で行う。たとえば以下は、あるファイルを開くことを想定したコード。os.Openがfileとerrorとの2つの返り値を返し、直後にif文を用いたエラーハンドリングを行っている。
file, err := os.Open(filename)
if err != nil {
fmt.Fprintln(os.Stderr, err)
return
}
因みにGoにはpanic/recoverという「例外処理用」っぽいものも用意されているが、プログラマーが故意に発生させるべきものではない。むしろ、Go実行時に発せられたpanicの芽を摘んでいく方が重要。
⇒Effective Go > Panic
より深く理解するには
続きはこちらからどうぞ。
Discussion