Golang 的 nil 是如何实现的?

Golang 中的 nil 是用于表示指针为 null 的一个预定义的常量。
它的主要特点有:
一、 定义
nil 定义在 Golang 的 predeclared 常量中。
它位于 constant 包中。

const nil = nil  

二、 类型
nil 是一个特殊类型,可以赋值给任何指针类型。

var p *int = nil
var pp **int  = nil

三、使用
用 nil 初始化指针变量:

var p *int   // p 的值为 nil

可以判断指针是否为 nil :

if p == nil {
    // ...
}

四、 作用
表示指针为 null,指向不存在的内存地址。
用以解引用的指针为空。

五、值
nil 的数值是0。
总的来说,Go 中的 nil :

  1. 是一个预定义的常量
  2. 位于 constant 包内
  3. 是一个特殊的类型
  4. 可以赋值给任何指针类型
  5. 表示指针为 null
  6. 其值是 0

nil 常量实现了指针为空的概念。
它可以保证指针安全。
比如:

if p != nil {
   // 解引用 p  
}

可以判断指针是否为空。