a和b有什么区别?我知道reflect.DeepEqual认为它们不相等,我知道a是零。是否有内置功能可以轻松显示差异?
var a []foo
b := []foo{}
答案 0 :(得分:3)
fmt.Println(a == nil, b == nil)
打印true false
(游乐场:http://play.golang.org/p/E0nQP8dVyE)。 a
是一个零切片,而b只是一个空切片。在实践中没有太多的区别,但通常,在查询数据库的函数中,nil切片意味着没有结果(由于错误或其他),而空切片 - 它无法找到信息。
有关较低级别的差异,请参阅Russ Cox的Go Data Structures文章。
答案 1 :(得分:2)