Go面试基础:Go中的nil是是什么?和java的null有区别吗?
前言
go语言中,有一个和java里的null很相似的变量为nil,但它其实还是有很多特性的,下面让我们一起来看看这里面有什么区别吧!
1. nil 是不能比较的
code-1
package main
import (
"fmt"
)
func main() {
fmt.Println(nil==nil)
}
code-1 输出
tmp/sandbox318449491/main.go:8: invalid operation: nil == nil (operator == not defined on nil)
这点和 python 等动态语言是不同的,在 python 中,两个 None 值永远相等。
>>> None == None
True
>>>
从 go 的输出结果不难看出,== 对于 nil 来说是一种未定义的操作。
2. 默认 nil 是 typed 的
code-2 Play
package main
import (

本文探讨了Go语言中的nil特性,包括它不能比较、默认为typed、不同类型的nil地址相同、不同类型nil不可比较,以及作为map、slice、pointer、channel、func和interface的零值。通过代码示例解析了nil与Java null的区别。
最低0.47元/天 解锁文章
2283

被折叠的 条评论
为什么被折叠?



