```go
func main() {
var sliceA []int
b := []int{}
fmt.Println(sliceA == nil)
fmt.Println(b == nil)
fmt.Println(len(sliceA), cap(sliceA))
fmt.Println(len(b), cap(b))
fmt.Println(sliceA)
fmt.Println(b)
}
```
运行结果为
```
true
false
0 0
0 0
[]
[]
```
为什么当 **b := []int{} **这样定义时,明明len cap都是0 却不等于nil
**var sliceA []int ** len cap也是0 却等于nil呢
我上面说的可能有一点不严谨;按照标准计算机语言的说法,b 是定义;sliceA 只是声明。
定义:声明了类型,同时进行初始化,也就是分配了内存空间
声明:只是声明了类型,并没有进行初始化,没有分配内存空间,所以是 nil
#3
更多评论