Go言語プログラミングエッセンス

書籍情報

発売日 : 2023年03月09日

著者/編集 : mattn

出版社 : 技術評論社

発行形態 : 単行本

書籍説明

内容紹介

あなたのGoのコードを「一段階」レベルアップするテクニック集。

目次

第1章 プログラミング言語Goとは
1.1 Goの簡単な歴史
1.2 Goの立ち位置
1.3 Goが利用される場面
 標準でUTF-8をサポート
 マルチプラットフォーム
 並行処理の扱いやすさ
 ストリーム指向
 シングルバイナリ
1.4 教育用途としてのGo
1.5 なぜGoが使われるのか
 コンパイルの速さ
 レビューのしやすさ
 周辺ツールの充実
 パッケージ公開の簡単さ
 libc非依存
 共同開発でのスキル差
1.6 まとめ

第2章 開発環境の準備3
2.1 Goコンパイラのインストール
 [COLUMN]GOROOT? GOPATH?
2.2 開発環境のセットアップ
 Visual Studio Code
 Vim
 Goland
2.3 まとめ

第3章 基本的な文法
3.1 プロジェクトフォルダ
3.2 Go言語の特徴
3.3 静的な型
3.4 基本的な構文
 変数宣言
 const(定数宣言)
 iota(列挙)
 命名規則
 関数呼び出し
 条件分岐
 ループ
 配列とスライス
 文字列
 map
 type(型宣言)
 struct(構造体)
 メソッド
 ポインタ
 interface{}またはany
 コンストラクタ
 インターフェース
 defer
3.5 goroutine(ゴルーチン)
 channel(チャネル)
 制御構文(select)
3.6 Goモジュールとは
 go.modの配置
 replace
 go install
3.7 プロジェクトレイアウト
3.8 lint文化
 go vet
 revive
 golangci-lint
3.9 go fmt
3.10 まとめ
 [COLUMN]おまじない

第4章 基本テクニックとベストプラクティス
4.1 ビルトイン関数
 printとprintln
 panicとrecover
 [COLUMN]Explicit is better than implicit, Simple is better than complex
 init関数
4.2 パッケージ
 fmtパッケージ
 logパッケージ
 encoding/jsonパッケージ
 netパッケージ
 timeパッケージ
 pathパッケージとpath/filepathパッケージ
 osパッケージ
 ioパッケージ
 contextパッケージ
4.3 build constraints
 ファイル名による指定
 +build(またはgo:build)コメントによる指定
 [COLUMN]マルチプラットフォーム向けアプリケーションの開発テクニック
4.4 cgo
 pkg-configを使って複雑なコンパイルオプションに対処
4.5 go:embed
4.6 Functional Options Pattern
4.7 Builder Pattern
4.8 internalパッケージ
4.9 Embedded struct
4.10 go run
4.11 まとめ

第5章 Webアプリケーションの開発に必要な要素
5.1 net/http
 基本の使い方
 ルーティング
 [COLUMN]Method Value
 ファイルのサーブ
5.2 html/template
 struct
 range/end
 if/else/end
 with/else/end
 template.HTML
 FuncMap
 template.Parse
 define/template
5.3 net/smtp
5.4 まとめ

第6章 速いプログラムのためのテクニック
6.1 並行と並列
6.2 goroutine
6.3 channel
6.4 非同期パターン
 ジェネレータ
 合流処理
 先着処理
 タイムアウト処理
 停止処理
 スロットリング(throttling)
6.5 まとめ

第7章 テストにおけるテクニック
7.1 テストの考え方
7.2 Goのテストの基本
 Table Driven Tests
 t.Skip/t.Skipf
 setup/teardown
 t.Short
 t.Parallel
 テストデータ
 カバレッジ
7.3 便利なテクニック
 テンポラリディレクトリ
 環境変数
7.4 Fuzzingテスト
7.5 まとめ

第8章 ベンチマークにおけるテクニック
8.1 「推測するな、計測せよ」
8.2 ベンチマークの基本
8.3 ベンチマークの比較
 改善の前と後の比較
 異なる実装の比較
8.4 プロファイリング
8.5 まとめ

第9章 GoによるCLIアプリケーション開発
9.1 システムのコンセプト
9.2 データベース登録プログラム
 [COLUMN]プログラムを作る手順
 ZIPファイルのURL一覧を得る
 ZIPファイルを展開する
 データベースに登録する
9.3 データベース照会プログラム
9.4 テストの実装
9.5 CLI開発に役立つライブラリ
9.6 フラグライブラリ
 flagパッケージ
 urfave/cli
 alecthomas/kingpin
 spf13/cobra
9.7 端末制御ライブラリ
 olekukonko/tablewriter
 mattn/go-runewidth
 jroimartin/gocui
9.8 まとめ

第10章 GoによるWebアプリケーション開発
10.1 システムのコンセプト
10.2 TODOアプリケーション
 Webサーバ
 リクエストハンドラ
 テンプレート処理
 静的ファイルのサーブ
10.3 リマインダメール送信
10.4 Goにおけるフレームワーク
 Gin
 Echo
 Micro
 Beego
 フレームワークの選定について
10.5 まとめ

第11章 GitHubでの開発における勘所
11.1 ライブラリの仕様
11.2 プロジェクトの作成
11.3 パッケージ名
11.4 実装
11.5 バージョニング
 [COLUMN]GitHubのワンポイントTips
11.6 テスト
11.7 ドキュメント
 go docの使い方
 godocの使い方
 https://pkg.go.dev/で閲覧する
11.8 ディレクトリ構造
11.9 自動テスト
11.10 自動リリース
11.11 まとめ

第12章 データベースの扱い方
12.1 database/sql
 サードパーティドライバ
 Query/QueryRow
 Exec
 Prepare
 Begin/Commit/Rollback
12.2 ent/ent
 OpenAPI連携
 entgen
12.3 ORMベンチマーク
12.4 まとめ

第13章 Goとクラウドサービス
13.1 Goがなぜ使われるのか
13.2 Google Cloud
13.3 AWS Lambda
13.4 Oracle Cloud
 [COLUMN]バイナリサイズを小さくする
13.5 まとめ

著者情報

mattn