すべての記事

Go上級 #5 unsafe と cgo — 安全領域の外へ
読了 6分

Go上級 #5 unsafe と cgo — 安全領域の外へ

unsafe.Pointer の 4 つのルール、cgo のトレードオフ、そしてどちらもほぼ使ってはいけない理由。

Go上級 #4 reflect パッケージ — ランタイムに型を扱う
読了 6分

Go上級 #4 reflect パッケージ — ランタイムに型を扱う

reflect.Type と reflect.Value、struct タグの読み取り、動的呼び出し。シリアライゼーションライブラリの内側で見かけるツール。

Go上級 #3 ジェネリクス — type parameter と constraint
読了 6分

Go上級 #3 ジェネリクス — type parameter と constraint

Go 1.18 に入ったジェネリクス。type parameter 文法、constraint、comparable と ~ トークン、そしていつ使わないほうが良いか。

Go上級 #2 メモリモデルと sync パッケージ
読了 6分

Go上級 #2 メモリモデルと sync パッケージ

Mutex、RWMutex、WaitGroup、Once、atomic — チャネルではない共有メモリ同期ツール。いつ何を使うか。

Go上級 #1 並行性パターン — fan-out・fan-in・pipeline
読了 6分

Go上級 #1 並行性パターン — fan-out・fan-in・pipeline

ゴルーチンとチャネルを組み立てて作る標準的な並行性パターン — pipeline、fan-out/fan-in、semaphore まで。

Go中級 #7 標準ライブラリツアー
読了 6分

Go中級 #7 標準ライブラリツアー

Go 標準ライブラリでよく使うもの — io、fmt、strings、time、sort、encoding/json までを一気に見渡します。

Go中級 #6 テスティング — testing パッケージと table-driven
読了 6分

Go中級 #6 テスティング — testing パッケージと table-driven

Go 標準 testing パッケージでユニットテストとベンチマークを書く方法、そして Go コードの標準パターンである table-driven テスト。

Go中級 #5 context.Context 深掘り
読了 6分

Go中級 #5 context.Context 深掘り

Goの標準キャンセル・タイムアウト・リクエストデータ伝達ツール。context が並行コードの骨格になる理由。

Go中級 #4 selectとタイムアウト
読了 5分

Go中級 #4 selectとタイムアウト

複数のチャネルを同時に扱うselect文、そしてタイムアウト・キャンセル・ノンブロック通信のような実践パターン。

Go中級 #3 ゴルーチンとチャネル入門
読了 7分

Go中級 #3 ゴルーチンとチャネル入門

Goの最大の強み — 軽量な並行性。ゴルーチンの起動とチャネルでの通信、そしてよく出会う罠。

Go中級 #2 エラー処理パターン
読了 7分

Go中級 #2 エラー処理パターン

エラーwrapping (%w)、errors.Isとerrors.As、カスタムエラー型、そしてpanicが似合う場面。

Go中級 #1 インターフェース — 暗黙的実装の意味
読了 8分

Go中級 #1 インターフェース — 暗黙的実装の意味

Goインターフェースの最大の特徴である暗黙的実装、小さなインターフェースのガイド、そして空インターフェースと型アサーション・型switch。