下面的两个切片声明中有什么区别?哪个更可取?

A. var a []int
B. a := []int{}

A 声明的 []int 未初始化 指向的nil B 声明的 []int 是已经初始化的 指向的内容为空的数组。

A 可以写到全局 B 只能写到函数内

A 与 B 占用的内存空间理论上是相同的。 注意:空切片empty slice 指向了一个固定地址,所以实际上确实没有分配内存。

但是B比A 多指向的内容为空的数组,这个操作也会消耗而外性能(🤏),在性能的角度上A具有优势