書籍概要
タイトルの通り実用的なGo言語の書き方について書かれた本です。
若干文章の結論が分かりづらい節がありましたがサンプルコード多めなので特に気にせずに読むことができました。
A Tour of Go や入門書でGoの言語機能を一通り使えるようになった後に読むのをおすすめします。
1〜6章まではGo言語についての基本と発展がまとまっているという感じで、7章以降はよりシステム開発チックな内容になっています。6章までは順に読みつつ7章以降は気になるトピックから読み進めるのが良さそうです。
本の目次
| 章 | 内容 |
|---|---|
| 第1章 | 「Goらしさ」に触れる |
| 第2章 | 定義型 |
| 第3章 | 構造体 |
| 第4章 | インタフェース |
| 第5章 | エラーハンドリング |
| 第6章 | パッケージ、モジュール |
| 第7章 | Goプログラミングの環境を整備する |
| 第8章 | さまざまなデータフォーマット |
| 第9章 | Goとリレーショナルデータベース |
| 第10章 | HTTPサーバー |
| 第11章 | HTTPクライアント |
| 第12章 | ログとオブザーバビリティ |
| 第13章 | テスト |
| 第14章 | クラウドとGo |
| 第15章 | クラウドのストレージ |
| 第16章 | エンタープライズなGoアプリケーションと並行処理 |
| 付録A | 駆け足で学ぶGoの基礎 |
| 付録B | Goの最新情報を知るための情報源 |
良かったところ
個人的にためになった内容を一部紹介します。
構造体とオブジェクト思考の違いを知る
オブジェクト指向の観点から見た構造体の用途が以下の4つに分けて紹介されています。
① ライブラリの機能を呼び出すメソッドを集約したインスタンス
② インターフェース経由で他から呼び出されるエントリーポイント
③ データセットを持ち運ぶためのバリューオブジェクト
④ タプルと呼ばれるようなデータの塊
自分の中で曖昧になっていたGoの構造体では何ができて何ができないのかを整理することができました。
テンプレートメソッドパターンではなく、ストラテジーパターン
Goではテンプレートメソッドパターンを使用しない代わりに、このようなパターン(ストラテジーパターン)を用います。
テンプレートメソッドパターンとはスーパークラスで処理の枠組みと主要なロジックを定義し、それを継承するサブクラスでロジックの一部をオーバーライドする設計のことです。
Goには継承もメソッドのオーバーライドもないため、このテンプレートメソッドパターンが利用できないので、この本では代わりにストラテジーパターンという一部の処理を引数で関数として渡せる設計が紹介されています。
公式パッケージのnet/http/httputil.ReverseProxyが具体例として紹介されていて実コードへの取り入れ方がイメージしやすかった点が良かったです。