nil的底层实现在源码中为:
```go
// nil is a predeclared identifier representing the zero value for a
// pointer, channel, func, interface, map, or slice type.
var nil Type // Type must be a pointer, channel, func, interface, map, or slice type
// Type is here for the purposes of documentation only. It is a stand-in
// for any Go type, but represents the same type for any given function
// invocation.
type Type int
```
在源码中好像是int类型?
我的疑惑是nil在实际使用中是有类型区分的,可以把nil转换为不同类型的nil。那nil是接口类型还是int类型?
如果接口类型他的data,type是什么内容呢?如果是int类型底层实现又是如何呢?
`nil无类型,注意,nil无类型,网上多半是误导,(*int)nil 像这样的东西并不是nil,而是值为nil的*int类型的实例对象,nil仅仅是一种标志,标志该内存的值未初始化!仅此而已。`
#2
更多评论
nil 可以用在 指针类型和接口类型上.
其实你不必纠结这个问题,
对于这种特殊的常量, 明白意义和用法即可.
这个就相当于C里面的NULL, 你需要了解NULL是怎么定义的吗? 了解了有啥意义?
#1