助力软件开发企业降本增效 PHP / java源码系统,只需一次付费,代码终身使用! 广告
在Go语言中,布尔类型的零值(初始值)为 false,数值类型的零值为 0,字符串类型的零值为空字符串"",而指针、切片、映射、通道、函数和接口的零值则是 nil。 nil 是Go语言中一个预定义好的标识符,有过其他编程语言开发经验的开发者也许会把 nil 看作其他语言中的 null(NULL),其实这并不是完全正确的,因为Go语言中的 nil 和其他语言中的 null 有很多不同点。 **nil 标识符是不能比较的** ``` package main import "fmt" func main() { fmt.Println(nil == nil) // invalid operation: nil == nil (operator == not defined on nil) } ``` **两个相同类型的 nil 值也可能无法比较** ``` package main import ( "fmt" ) func main() { var v1 []int var v2 []int fmt.Printf(v1 == v2) // invalid operation: v1 == v2 (slice can only be compared to nil) } ``` 通过上面的错误提示可以看出,能够将上述不可比较类型的空值直接与 nil 标识符进行比较 ``` package main import ( "fmt" ) func main() { var v1 []int fmt.Println(v1 == nil) // true } ```