📚

【Go】おすすめGo本3選などまとめ

2022/05/12に公開

私がこれまで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