【Go】おすすめ技術書3選などまとめ

Categories:Go

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

参考

仕様上、正規表現は遅い(場合が多い)

より深く理解するには

Go言語の設計思想に触れた「 「Go言語らしさ」とは何か? Simplicityの哲学を理解し、Go Wayに沿った開発を進めることの良さ – エンジニアHub|Webエンジニアのキャリアを考える!」、「Goらしさとは何なのか考える – My External Storage」をはじめとして、Goの言語仕様についての日本語訳や以下のようなまとめ記事を読むと良いと思う。

「技術書派」に薦めたい3冊

1.スターティングGo言語

プログラミング言語自体の経験が浅い人には、まずこれを薦めたい。ただし、技術書としてはやや古いので、最初のハンズオンはA Tour of Goなどで進めつつ、その理解の補強に使うのが良いと思う。

2.みんなのGo言語

実際に業務でGo言語を使っている人たちが集まって書いた、骨太なtips集のような一冊。はじめの1冊としては薦められないが、ある程度Goに慣れてきた時に、読みたい章や節をつまみ食いのように読むと面白い。

3.プログラミング言語Go

プログラム構造からインターフェース、ゴルーチンによる並列実行からcgoによるCコード呼び出しまで、Go言語についての基本を網羅できる本。記述内容は易しくはないので、UNIXについてある程度わかっていたり、他の高級言語(Pythonなど)を経験したことがある人向け。プロジェクトとして1冊買って、辞書的に使うのも良いかもしれない。因みに、訳者の柴田芳樹さんの対談記事はここで読める。

返信がありません

コメントを残す

メールアドレスが公開されることはありません。