LoginSignup
9
3

More than 1 year has passed since last update.

[書籍レビュー] 実用Go言語

Posted at

書籍概要

実用Go言語

タイトルの通り実用的な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が具体例として紹介されていて実コードへの取り入れ方がイメージしやすかった点が良かったです。

9
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
9
3