タグ

GoLangとnilに関するoinumeのブックマーク (2)

  • nil は nil

    【2020-10-15 追記】 最近 Zenn で以下の記事を書いたので,こちらも併せてどうぞ。 nil == nil でないとき(または Go プログラマは息をするように依存を注入する) Interface 型の nil 値は「依存の注入(dependency injection)」と絡めて考えると分かりやすいかも知れない。 宣伝でした(笑) Qiita を覗いてたら Goのnilは(nil, nil)という(型, 値)ペアのインターフェースだと把握すれば混乱しない - Qiita という記事を見かけた。 おそらくは nil の理解のための方便として意図的に書かれているのだろう。 それはそれで悪くないのだが,微妙に危険な香りがするので私なりの解説を記しておく。

    nil は nil
  • 絶対ハマる、不思議なnil - Qiita

    goのnilは直感的ではない、これは強烈にハマりそう。 型を持つnil nilと一口に書くが、実際には型がある。 nilとnilが等価でないように見える nilが型情報を持つので、nil == nilがtrueになるとは限らない。 trueとなるためには、右辺と左辺の「nil」の型が一致しているという条件が必要。 package main func main() { var x *int32 = nil var y *int64 = nil equals(x, y) return } func equals(x, y interface{}) { println(x == y) }

    絶対ハマる、不思議なnil - Qiita
    oinume
    oinume 2015/02/27
    nil自体が型を持っているので、nil == nilは等しくならない場合がある
  • 1