メインコンテンツまでスキップ

nil と panic をテーマにした理解チェック&深掘り用の質問カテゴリ.md

  • Category 1: nil 基礎
  • Category 2: 実務 nil
  • Category 3: panic
  • Category 4: recover
  • Category 5: interface × nil(難所だけど価値大)
  • Category 6: 実務シミュレーション

Category 1: nil の基本

No質問
1Goで nil になりうる型は何?具体例は?
2var s []int = nils := []int{} の違いは?
3var m map[string]int(nil map)には何ができて何ができない?
4var p *User = nil の状態で p.Name を呼ぶとどうなる?
5nil の「ゼロ値」と「未初期化」の違いは?

Category 2: 実務 nil 判定

No質問
6if x == nil {} で検出できないケースとは?
7Optional値を表現するとき、なぜポインタ使う?
8DB検索で「見つからなかった」とき nilerror の使い分け例は?
9Struct内の *time.Time*int が nil の場合、どう扱う?
10nilスライスをJSONにするとき、null[] の違いは?

Category 3: panic の基本

No質問
11panic が起きる典型パターンを5つ挙げて
12error と panic の使い分けは?
13panic が起きたとき Goの内部で何が起きる?
14panic を使うべき状況はどんなとき?
15map書き込みでpanicが起きる条件は?

Category 4: defer / recover

No質問
16recover が効く条件は?(場所・スコープ)
17recover した後の処理フローどうなる?
18HTTPサーバでpanicを止める仕組みどう作る?
19panic情報(stacktrace)をログに残す理由は?
20recover 乱用すると何が悪い?

Category 5: interface × nil(難所)

No質問
21「型付きnil」とは?
22なぜ w == nil が false なのに内部は nil のことがある?
23interface に nil を入れるより良い代替設計は?
24(interface, bool) パターンの利点は?
25error も interface だけど nil問題は起こる?

Category 6: 実務シナリオ

No質問
26APIレスポンスで null と [] の扱い方は?
27DBレイヤが (*User, nil) を返したとき、ハンドラ側でどう処理?
28nilが返る関数に対して防御的にどう書く?
29nil chan を利用すると便利なパターンは?
30Config struct に Optional値があるときの安全な実装は?