Go语言nil特性
- nil 标识符是不能比较的
- nil 不是关键字或保留字
- 不同类型 nil 的指针是一样的
- 不同类型的 nil 是不能比较的
- 两个相同类型的 nil 值也可能无法比较
- nil 是常见引用类型的零值
类型默认值
- 数值类型 的零值为 0,
- 布尔类型 的零值(初始值)为 false,
- 字符串类型 的零值为空字符串 “”,
- 指针、切片、映射、通道、函数 和接口等引用类型的零值则是 nil
package mainimport "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> */}