0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

変数にnilとかつけちゃダメだよ

Posted at

特徴

Go言語でnilはユニバースブロックで定義されています。ユニバースブロックとは公式によるとGo言語でのユニバースブロックとはソースコード全体を包んでいるブロックを示します。これはプログラム全体のスコープを指し、すべてのプログラムで共通に使用される識別子や型が含まれています。

実装

main.go
package main

func main() {
    nil := 42  // ここでnilを再定義
    var ptr *int
    if ptr == nil {  // 本来のnilの意味が失われている
        println("ptr is nil")
    }
}

上記の実装では、本来のnilの性質をシャドーイングしバグが発生しやすくなります。

参考記事

The Go Programming Language Specification - The Go Programming Language

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?