您参考的文档指出 零个切片的长度和容量为0, 但并非 每个
长度和容量为零的切片都是零个切片。规范仅说 未初始化的
片的值为nil。
这是一个方便的支撑
len和
cap在其上未初始化(无)切片。否则,我们将需要首先检查非零以避免恐慌。(这也适用于其他内置类型,例如地图或渠道。)
在
fmt.Print输出方面,行为上的差异类似于打印未初始化的(nil)指针与指向空结构的指针:
var s *struct{} // uninitialised pointerfmt.Println(s) // <nil>s = &struct{}{} // pointer to an empty structurefmt.Println(s) // &{}


