【发布时间】:2018-08-12 17:40:09
【问题描述】:
区分零切片有什么意义,即。未初始化的切片和一个空切片,即。已初始化但为空切片?
我了解其中的区别,但我想知道这两种情况之间存在细微差别的动机是什么?出于所有意图和目的,nil 切片和空切片在使用时的行为相同。
似乎 Go 开发人员只有一种情况,例如只允许空切片,它会简化思维模型并消除细微错误的来源。
创建这两个用例有什么原因吗?
【问题讨论】:
-
您还提到了哪些关于 nil 切片的细微错误?
-
在某些情况下,“盒子里没有苹果”和“没有盒子”之间存在细微差别。
-
我已经写了一个答案here,其中有来自“Go in action”一书的一些解释,可能会有所启发......