Go语言nil特性
- nil 标识符是不能比较的
- nil 不是关键字或保留字
- 不同类型 nil 的指针是一样的
- 不同类型的 nil 是不能比较的
- 两个相同类型的 nil 值也可能无法比较
- nil 是常见引用类型的零值
类型默认值
- 数值类型 的零值为 0,
- 布尔类型 的零值(初始值)为 false,
- 字符串类型 的零值为空字符串 “”,
- 指针、切片、映射、通道、函数 和接口等引用类型的零值则是 nil
package main
import "fmt"
func main() {
// 基础类型
var num int
var str string
var b bool
//nil 是常见引用类型的零值
var m map[int]string
var ptr *int
var c chan int
var sl []int
var f func()
var i interface{}
fmt.Printf("%#v\n", num)
fmt.Printf("%#v\n", str)
fmt.Printf("%#v\n", b)
fmt.Printf("%#v\n", m)
fmt.Printf("%#v\n", ptr)
fmt.Printf("%#v\n", c)
fmt.Printf("%#v\n", sl)
fmt.Printf("%#v\n", f)
fmt.Printf("%#v\n", i)
/**
0
""
false
map[int]string(nil)
(*int)(nil)
(chan int)(nil)
[]int(nil)
(func())(nil)
<nil>
*/
}