【2020-10-15 追記】 最近 Zenn で以下の記事を書いたので,こちらも併せてどうぞ。 nil == nil でないとき(または Go プログラマは息をするように依存を注入する) Interface 型の nil 値は「依存の注入(dependency injection)」と絡めて考えると分かりやすいかも知れない。 宣伝でした(笑) Qiita を覗いてたら Goのnilは(nil, nil)という(型, 値)ペアのインターフェースだと把握すれば混乱しない - Qiita という記事を見かけた。 おそらくは nil の理解のための方便として意図的に書かれているのだろう。 それはそれで悪くないのだが,微妙に危険な香りがするので私なりの解説を記しておく。
![nil は nil](https://cdn-ak-scissors.b.st-hatena.com/image/square/d10addccef9c7773072a5ec748deb629e26bc669/height=288;version=1;width=512/https%3A%2F%2Ftext.baldanders.info%2Fimages%2Fattention%2Fgo-logo_blue.png)